看板 MacDev 關於我們 聯絡資訊
範例: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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.221.141 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1426142080.A.A1F.html
ckvir: 如果改成 selector:Selector("initFoo") 呢? 03/12 14:53
ckvir: 或試試 selector:"initFoo" 不加括弧 03/12 14:56
ckvir: 以及加上 @objc func initFoo {... 試試看 03/12 15:00
剛才試了一下 有沒有加Selector() 和有沒有@objc一共4種組合都會Crash ※ 編輯: fishead1116 (211.21.229.247), 03/12/2015 15:09:12
ckvir: 有 Crash 的訊息嗎? 03/12 15:18
在Appdelegate出現 Thread 1: EXC_BAD_ACCESS(code=1 把enable zombie object 選項打開會出現 [(Project名稱).ViewController retain]: message sent to deallocated instance ※ 編輯: fishead1116 (211.21.229.247), 03/12/2015 15:25:32
uranusjr: 看起來是你自己被 dealloc 了, 不是 selector 的問題 03/12 15:42
uranusjr: 請提供更多資訊以及能實際重現問題的範例 03/12 15:42
你這麼一說我才發現如果開空Project的話無法重現= ="" 我已經把viewDidLoad砍到剩那一行還是有問題, class裡有幾個用storyboard拉的UILabel,UIButton,UIImageView class有實作CBCentralManagerDelegate,CBPeripheralDelegate 不過那幾個方法完全沒使用到 ※ 編輯: fishead1116 (211.21.229.247), 03/12/2015 16:00:37 BTW 同一個.swift檔案還有一個enum和一個struct 是說,Swift不是自動會dealloc的嗎? ※ 編輯: fishead1116 (211.21.229.247), 03/12/2015 16:03:10
darktt: 你的timer被ralease了,建議採用property保持timer的 03/12 16:51
darktt: reference 03/12 16:51
還是一樣耶,我上傳我的範例 http://ppt.cc/fIRF 我是用模擬器iOS7.1 和iOS8.1 iPhone 5S 和iPhone 6跑的 ※ 編輯: fishead1116 (211.21.229.247), 03/12/2015 17:02:11
ckvir: Swift 有一些情況是不會自動 dealloc 的,所以會造成 memor 03/12 17:13
ckvir: y leak 03/12 17:13
※ 編輯: fishead1116 (118.163.221.141), 03/12/2015 17:24:53
johnlinvc: 不知道為何你的ViewContorler會被release 03/13 18:12
johnlinvc: hacky的解法是在AppDelegate裡面開一個var 指向他 03/13 18:13
johnlinvc: 這樣可以不會當...但是root Cause 未知 03/13 18:14
其實只要不要用init開頭就沒有問題 可能跟ViewController的某些方法相衝到了吧
ckvir: 還真的滿奇怪的,我也想知道解答 03/13 20:33
※ 編輯: fishead1116 (118.171.154.94), 03/13/2015 22:41:22