自分でswift本よんで、実際にプロジェクト使う時ハマるかもしれないところをまとめてみました(追加していく予定)。
Selector
swiftには @selectorがない、stringはそのままにSelectorになる(自動変換)
performSelector: も使えない、代わりに"?"を使う
let mySelector: Selector = "tappedButton:"
myButton.addTarget(self, action: "tappedButton:", forControlEvents: .TouchUpInside)
NSError point
NSError ** swiftでは使えない。代わりにNSErrorPointerを使う
var writeError: NSError?
let written = myString.writeToFile(path, atomically: false,
encoding: NSUTF8StringEncoding,
error: &writeError)
if !written {
if let error = writeError {
println("write failure: \(error.localizedDescription)")
}
}
Closures _block
objective-c block使ってるとき block内でblock外の変数値変えるできるにするためには 変数に _blockにつける必要ある。
それがswiftの Closuresではデフォルトの仕様になってます。つまり変数に_blockつけなくても変えるようになった.
if ([obj isKindOfClass:[Foo class]]) { … })
var someValue : Any?
someValue = "String"
if someValue is String {
println("someValue is a String")
} else {
println("someValue is something else")
}