Skip to content

Instantly share code, notes, and snippets.

View rosstulloch's full-sized avatar

Ross Tulloch rosstulloch

View GitHub Profile
@rosstulloch
rosstulloch / gist:9aae80d96568be8d5996790ac0214810
Last active October 19, 2017 23:15
.self vs .Type vs type(of:)
protocol HasInit {
init()
func sayHi()
}
extension HasInit {
func sayHi() { print("Hi from an instance of \(type(of: self))") }
}
@rosstulloch
rosstulloch / NSClassFromSwift.swift
Created October 25, 2017 20:58
To instantiate a Swift class dynamically using NSClassFromSwift. This works for ObjC as well as pure Swift classes.
class YourClass {
required init() {
}
func saySomething() {
print("Hi!")
}
}
if let classType = NSClassFromString("APPNAMEORMODULE.YourClass") as? YourClass.Type {
@rosstulloch
rosstulloch / Type Casts.swift
Last active November 1, 2017 21:51
Type Casts in Swift
func typecast<T,U>(_ a:T) -> U {
var _a = a
return withUnsafePointer(to: &_a) { (ptr:UnsafePointer<T>) -> U in
return UnsafeRawPointer(ptr).load(as: U.self)
}
}
func typecast_inplace<T,U>(_ a:inout T) -> U {
return withUnsafePointer(to: &a) { (ptr:UnsafePointer<T>) -> U in
return UnsafeRawPointer(ptr).load(as: U.self)
@rosstulloch
rosstulloch / File Reference URL in Swift.swift
Created November 2, 2017 09:54
File Reference URL in Swift.swift
if let refURL = (a as NSURL).perform(#selector(NSURL.fileReferenceURL))?.takeUnretainedValue() as? NSURL {
print(refURL)
}