Skip to content

Instantly share code, notes, and snippets.

Avatar

Timothy J. Wood tjw

View GitHub Profile
@tjw
tjw / switch-enum-struct-case.swift
Created Sep 13, 2014
switch with enum case with struct associated value
View switch-enum-struct-case.swift
/*
xcrun swiftc -c switch-enum-struct-case.swift
switch-enum-struct-case.swift:30:36: error: '(size: Size)' does not have a member named 'width'
println("rectangle with size \(size.width)x\(size.height)")
^ ~~~~~
*/
struct Size {
View gist:fdb5c60dc1d15660658c
convenience public init?(url:NSURL, error:NSErrorPointer) {
if let data = NSData(contentsOfURL:url, options: NSDataReadingOptions(0), error: error) {
self.init(data:data)
} else {
return nil;
}
}
--> all stored properties of a class instance must be initialized before returning nil from an initializer
@tjw
tjw / protocol-type-member.swift
Last active Aug 29, 2015
Can't access members of protocol types
View protocol-type-member.swift
public protocol MeasurementUnit {
// If we have one of this unit, how many millimeters is it?
class var asMillimeters: Double { get }
}
public class Inch : MeasurementUnit {
public class var asMillimeters: Double {
get {
return 25.4
}
}
View unit-types.swift
import Foundation
@objc protocol MeasurementUnit {
// If we have one of this unit, how many millimeters is it?
class var asMillimeters: Double { get }
var value: Double { get }
init(_:Double)
}
@tjw
tjw / type-with-unit.swift
Created Oct 23, 2014
Geometric types with units
View type-with-unit.swift
public protocol MeasurementUnit {
// If we have one of this unit, how many millimeters is it?
class var asMillimeters: Double { get }
}
public class Millimeter : MeasurementUnit {
public class var asMillimeters: Double {
get {
return 1.0
@tjw
tjw / subclass-float-literal.swift
Created Nov 5, 2014
Example for Radar 18877135
View subclass-float-literal.swift
/*
Subclassing a FloatLiteralConvertible conforming class and then using the convertible bit uses the superclass initializer, even when the subclass type is specified explicitly.
% xcrun -sdk macosx swiftc ./subclass-float-literal.swift
% ./subclass-float-literal
b1 className = B
b1 = B
b2 className = A
assertion failed: Must be subclassed: file ./subclass-float-literal.swift, line 23
@tjw
tjw / instantiate-from-class.swift
Created Nov 16, 2014
Radar 18996669: Swift: Attempting to instantiate instance via class pointer crashes
View instantiate-from-class.swift
/*
Radar 18996669: Swift: Attempting to instantiate instance via class pointer crashes
% xcrun -sdk macosx swiftc instantiate-from-class.swift
0 swift 0x0000000107668b68 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x0000000107669054 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff95c74f1a _sigtramp + 26
3 libsystem_platform.dylib 0x0000000108bd3e00 _sigtramp + 1928720128
4 swift 0x0000000107a675fc collectFullName(swift::ArchetypeType const*, llvm::SmallVectorImpl<char>&) + 92
5 swift 0x0000000107a675c8 collectFullName(swift::ArchetypeType const*, llvm::SmallVectorImpl<char>&) + 40
@tjw
tjw / preview-from-url.m
Created Jan 9, 2015
NSURLThumbnailDictionaryKey test
View preview-from-url.m
#import <Cocoa/Cocoa.h>
/*
clang -fobjc-arc -Wall preview-from-url.m -o /tmp/preview-from-url -framework Cocoa
When run on a file in my iCloud Drive:
2015-01-08 16:39:54.008 preview-from-url[23221:261259] NSURLThumbnailDictionaryKey = {
NSThumbnail1024x1024SizeKey = "<NSImage 0x7fd6b34228f0 Size={790, 1024} Reps=(\n \"<NSCGImageSnapshotRep:0x7fd6b34249e0 cgImage=<CGImage 0x7fd6b3423de0>>\"\n)>";
}
@tjw
tjw / readonly-property-analyzer.m
Created Mar 12, 2015
20140181: Regression: clang static analyzer emits spurious warning when releasing strong ivar in -dealloc
View readonly-property-analyzer.m
#import <Foundation/Foundation.h>
/*
clang --analyze readonly-property-analyzer.m
readonly-property-analyzer.m:20:2: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
[_string release];
^~~~~~~~~~~~~~~~~
1 warning generated.
@tjw
tjw / CGGStack
Created Jun 3, 2015
CGGStack dtrace wrapper script
View CGGStack
#!/bin/zsh -euf
# NOTE: In order for the -c flag to work, 'main' must not be stripped from the executable.
# If it has been, you'll get the cryptic
#
# dtrace: failed to control pid 82297: process exited with status 0
#
if [ $# -ne 1 ]; then
echo "usage: $0 [executable-name|app-path|app-identifier]" 1>&2