Skip to content

Instantly share code, notes, and snippets.

View DevAndArtist's full-sized avatar
🦅
Hacking in Swift

Adrian M. DevAndArtist

🦅
Hacking in Swift
View GitHub Profile
@DevAndArtist
DevAndArtist / Property Delegates.md
Last active March 24, 2019 10:38
Property Delegates

Application Development Techniques

Drivable UI

@dynamicMemberLookup
struct DriverFor<Base> {
 var base: Base
public struct Unique<Key, Value>: Hashable where Key: Hashable {
public enum KeyVariant {
case key(Key)
case keyPath(KeyPath<Value, Key>)
case closure((Value) -> Key)
internal func _key(for value: Value) -> Key {
switch self {
case .key(let key):
@DevAndArtist
DevAndArtist / deinit-experiment.swift
Created September 13, 2018 14:25
Deinit experiement
class Ref {
weak var obj: Obj? {
didSet { print("didSet", obj as Any) }
}
}
class Obj {
weak var ref: Ref?
func unlink(from ref: Ref) {
protocol ValueContainer {
associatedtype Value
var value: Value { get }
init(_ value: Value)
}
extension ValueContainer where Self : Equatable, Value : Equatable {
static func == (lhs: Self, rhs: Self) -> Bool {
return lhs.value == rhs.value
}
import RxSwift
public final class DisposeCache<Key>
: ExpressibleByDictionaryLiteral where Key : Hashable {
///
private var lock = NSRecursiveLock()
///
private var storage: [Key: Disposable]
import UIKit

protocol ViewComponent : AnyObject {
  ///
  func isAncestor(of descendant: Self) -> Bool

  ///
  func isDescendant(of ancestor: Self) -> Bool
@DevAndArtist
DevAndArtist / Logger.swift
Last active December 8, 2017 15:11
Logger (WIP)
import Darwin
import UIKit
protocol _LoggerDelegate : AnyObject {
///
func logger(_ logger: Logger, received newString: String)
}
final class Logger {
///
func ?? <T>(_ optional: T?, _ trap: @autoclosure () -> Never) -> T {
	switch optional {
	case .some(let value):
		return value
	case .none:
		trap()
	}
}
@DevAndArtist
DevAndArtist / guardedAreaLayoutGuide.md
Created September 13, 2017 20:47
A layout guide for iOS 10 that is very similar to the `safeAreaLayoutGuide` from iOS 11.

A layout guide for iOS 10 that is very similar to the safeAreaLayoutGuide from iOS 11.

extension UIView {
	///
	private final class LayoutGuide : UILayoutGuide {}
	
	///
	var guardedAreaLayoutGuide: UILayoutGuide {
		if #available(iOS 11, *) {