作者iampaul83 (菜脯)
看板MacDev
标题Re: [闲聊] Swift的selector遇到奇怪的bug
时间Sat Mar 21 16:50:49 2015
※ 引述《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
-----
Sent from JPTT on my HTC One 801e.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.75.72.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1426927857.A.F3A.html
1F:推 fishead1116: 感谢解答 03/26 08:32