これは単純な学問ではなく、実際のコードです。EXC_BAD_ACCESS using self.performSelector
performSelector関数を使用して印刷メソッドを実行します。しかし、このコードをプレイグラウンドで実行すると、例外がスローされます。
EXC_BAD_ACCESS(code = EXC_I386_GPFLT)。
コード:
//: Playground - noun: a place where people can play
import UIKit
@objc(Foo)
class Foo: NSObject {
func timer() {
self.performSelector(#selector(Foo.print))
}
@objc func print() {
NSLog("print")
}
}
let instance = Foo()
instance.timer() // <-- EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
問題がありますか?私は、コードがあまりにも遊び場で実行されると信じてい
@objc func print() -> AnyObject? {
NSLog("print")
return nil
}
:
ストレンジが、それは遊び場でクラッシュそれはプロジェクトで動作します。 – Moritz