Skip to content

Instantly share code, notes, and snippets.

View qnoid's full-sized avatar
💭
I have been raised by women. My single mother, my grandma, my godmother.

Markos Zoulias Charatzas qnoid

💭
I have been raised by women. My single mother, my grandma, my godmother.
View GitHub Profile
@qnoid
qnoid / SuperclassCallsOverridableMethod.playground
Last active August 9, 2017 11:43
Swift ensures that all properties of a derived class are initialised before calling its base class. The compiler will generate a warning. Just move the statement below the assignment to remove the warning. Compared to Java, this is safe. See: http://stackoverflow.com/questions/3404301/whats-wrong-with-overridable-method-calls-in-constructors
import Cocoa
class Plane
{
init()
{
readyToTakeOff();
}
func readyToTakeOff(){
@qnoid
qnoid / AppDelegate.swift
Last active June 16, 2017 19:24
This is a sample project to demonstrate how you can use a computed property to create a reusable function ("closure") that mimics a constant value. Think of it as a way to encapsulate both the data and the function it applies to.
//
// AppDelegate.swift
// Keychain
//
// Created by Markos Charatzas on 07/09/2014.
// Copyright (c) 2014 qnoid.com. All rights reserved.
//
import Cocoa
class FooViewController: UIViewController
{
}
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let fooViewController = FooViewController()
let view = self.window!.snapshotViewAfterScreenUpdates(false)
let viewController = UIViewController()
@qnoid
qnoid / ViewController.swift
Created January 22, 2016 12:31
In a capture list, there is no need to capture a reference to "self" if you need a reference to an instance self holds. https://twitter.com/qnoid/status/690507191057551360
class ViewController : UIViewController
{
var foo = "foo"
func hello()
{
let closure = { [foo = self.foo] in
print("Hello \(foo)!")
}
}
@qnoid
qnoid / Avatar.swift
Last active April 10, 2016 21:55
Just trying to push the limits of Swift to see what's possible. Trying to get an overall understanding of how code can be structured. Especially around object life cycles. Check the revisions for iterations over the design. Please don't write code like this, unless you know what you are doing.
struct Imager
{
unowned let session: Session
unowned let avatar: Avatar
func image(imageView: UIImageView) {
let download = self.session.download(self.avatar.image) { [weak imageView = imageView] (data, response, _) in
guard let _imageView = imageView else {
@qnoid
qnoid / LocalAuthentication.swift
Last active May 25, 2016 14:18
How using an "Optional Pattern" alongside an "Enumeration Case Pattern" in Swift reduces the code it takes to match an optional AND an enum case at once while capturing its associated values.
// MARK: - guard without Optional Pattern
extension LocalAuthentication {
convenience init?(authenticationLevel: AuthenticationLevel?){
guard let authenticationLevel = authenticationLevel else {
return nil
}
switch authenticationLevel {
guard let foo = foo else {
assertionFailure("This shouldn't happen")
return
}
@qnoid
qnoid / Process.swift
Last active July 16, 2017 18:23
Train of thought on how to design the idea of running a series of processes, lazily created, stopping execution early on first error.
// 1
let process = Process()
process.launch()
process.waitUntilExit()
// 2.
let process = Process()
let queue = DispatchQueue()
queue.async {
*{box-sizing:border-box;margin:0;padding:0}
html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
address,caption,code,figcaption,pre,th{font-size:1em;font-weight:400;font-style:normal}
fieldset,iframe,img{border:0}
caption,th{text-align:left}
table{border-collapse:collapse;border-spacing:0}
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
audio,canvas,progress,video{display:inline-block;vertical-align:baseline}
button{background:0 0;border:0;box-sizing:content-box;color:inherit;cursor:pointer;font:inherit;line-height:inherit;overflow:visible;vertical-align:inherit}
button:disabled{cursor:default}
var APP_VERSION = '1.0.21';
! function e(t, n, r) {
function i(a, l) {
if (!n[a]) {
if (!t[a]) {
var s = "function" == typeof require && require;
if (!l && s) return s(a, !0);
if (o) return o(a, !0);
var c = new Error("Cannot find module '" + a + "'");
throw c.code = "MODULE_NOT_FOUND", c