Re: [閒聊] Swift的selector遇到奇怪的bug

作者: iampaul83 (菜脯)   2015-03-21 16:50:49
※ 引述《fishead1116 (DD魚)》之銘言:
: 範例:http://ppt.cc/fIRF
: override func viewDidLoad(){
: var timer = NSTimer.scheduledTimerWithTimeInterval(3, target: self,
: selector:"initFoo",userInfo : nil,repeats: false)
: }
: func initFoo(){
: println("initFoo")
: }
: 這段程式執行的時候會導致ViewController Crash掉...
: 但是如果直接在viewDidLoad裡面執行initFoo()就正常
: 如果selector 和func 都改成initfoo (全小寫)也是正常
: 不太確定為啥會有這種BUG ,以後還是別拿保留字當函式名稱一部分了..
: PS 用的是XCode 6.1
這應該是方法名稱問題
在objc裡的方法不能使用init開頭的名稱
Swift沒有這個限制,但是給objc呼叫的話會當掉
我是用一個objc的class去呼叫swift class的物件方法驗證的
Swift的initFoo可以成功被呼叫,但在不久後會當掉
所以雖然swift沒有這個命名限制,但是還是不要這樣取囉
畢竟到處都是objc
作者: fishead1116 (DD魚)   2015-03-26 08:32:00
感謝解答

Links booklink

Contact Us: admin [ a t ] ucptt.com