Skip to content

Instantly share code, notes, and snippets.

@externvoid
externvoid / cluster.swift
Last active May 25, 2016 01:05
クラスクラスターの例、ネットで拾ったのでタブが俺の流儀と異なる
class Vehicle
{
var wheels: Int? {
get {
return nil
}
}
class func vehicleFactory(wheels:Int) -> Vehicle
{
@externvoid
externvoid / foo.txt
Last active May 25, 2016 01:10
コレクションオブジェクト(編集中)
⭕️forEach, for-inに応答できるオブジェクトを生成できるクラスを作る。
2つの文はループ枚にnext()を呼び出す。似たような関数anyGeneratorがあってその関数はGenerator型(closureを返すので、next()を呼び出すのと似ている)を返す。
1️⃣SequenceTypeに準拠させる
2️⃣generateメソッドを定義(SequenceTypeが要求)
3️⃣戻り値はGeneratorTypeに準拠させる
4️⃣戻り値のクラスにはnext()メソッドを用意する。
let sine = SineClass() //ここでgenerate()は呼ばれないfor or forEachで一回だけ呼ばれる
💠使い方1
for x in sine {
@externvoid
externvoid / cluster.swift
Last active May 22, 2016 23:41
クラスクラスターの実装例、掌田津耶乃(しょうだつやの)Objective-C2.0徹底解説を参考にした
import Foundation
// class clusterの例:2種のクラスのインスタンスを生成できるfactory
class MyColor {
// var r: Int = 0, g: Int = 0, b: Int = 0
class func createWithColor(n: Int) -> MyColor {
var res: MyColor?
switch n {
case 0:
res = RedMyColor()
case 1:
@externvoid
externvoid / hashable.swift
Last active May 25, 2016 00:45
辞書のキーにできる型をて意義する。func == のところが奇妙。グローバル関数なのが、変だ。これ、熊谷さんのblog掲載のコード。
class KeyClass {
var value:String
init(_ value:String) {
self.value = value
}
}
extension KeyClass : Hashable {
var hashValue: Int {
return self.value.hashValue
}
@externvoid
externvoid / unsolved.swift
Last active January 18, 2017 06:31
解読したい、Swiftコード、unSafe族が良く判らん!<- ✳️コメント有り✳️
import Foundation
enum Vehicle {
case Car(windows: Int, wheels: Int)
case Ship(windows: Int, funnels: Int, anchors: Int)
case Plane(windows: Int, wheels: Int, wings: Int, engines: Int)
}
var aPlane: Vehicle = .Plane(windows: 1, wheels: 9, wings: 8, engines: 4)
var voidPtr: UnsafePointer<Vehicle> = unsafeBitCast(&aPlane,
@externvoid
externvoid / unsolved2.swift
Created May 24, 2016 01:53
unsafe族に関連するSwiftソースコード
import Foundation
func iterateEnum<T: Hashable>(_: T.Type) -> AnyGenerator<T> {
var cast: (Int -> T)! // reference to clousure
//print(($0).dynamicType)
// what is $0 ?, Int, 0, 1, 2, 3, 4 for nil
switch sizeof(T) {
case 0: return anyGenerator(GeneratorOfOne(unsafeBitCast((), T.self)))
case 1: cast = { unsafeBitCast(UInt8(truncatingBitPattern: $0), T.self) }
// print($0.dynamicType);print($0)
@externvoid
externvoid / unsafe-related.swift
Last active May 27, 2016 05:37
Memory-layout-based hacking in swiftから抜粋(unsafe族へのヒントが判る)
@externvoid
externvoid / uncaughtedException.swift
Last active April 22, 2019 08:40
Uncaught Exceptionをlogへ保存する
// case 1
//AppDelegate#application:didFinishLaunchingWithOptions
NSSetUncaughtExceptionHandler {e in
print(">>>>> ExceptionHandler OK")
let log = NSString(format:"%@, %@", e.name, e.reason!)
NSUserDefaults.standardUserDefaults().setValue(log, forKey: "failLog")
}
// case 2
// Closureを渡さなくても、swift関数の関数名を渡しても良い。ただし、NSSetUncaughtExceptionHandlerと同じスコープ内に
// swift関数が無いとコンパイルエラー⁉️
@externvoid
externvoid / pushViewController.swift
Created June 1, 2016 07:38
FilesOwnerってナンダァ⁉️
let vc = ParamViewController(nibName : "ParamViewController", bundle : nil)
@externvoid
externvoid / makeicon.sh
Created December 7, 2016 00:40
便利ツール1、アイコンを作る
#!/bin/sh
if [ $# -ne 1 ]; then
echo "making 120, 180px icons at current directory from specified file."
echo "usage: makeicon file, one args required";
exit;
fi
BASEFILE=$1
echo $1
echo $BASEFILE
sips -Z 120 $BASEFILE --out [email protected]