我得到我的應用程序崩潰是由於以下錯誤:「無法識別的選擇器發送到實例」錯誤是什麼意思?
-[NSCFString count]: unrecognized selector sent to instance 0x612b060
誰能告訴我這是什麼意思,我怎樣可以找到我的代碼行參考0x612b060
我得到我的應用程序崩潰是由於以下錯誤:「無法識別的選擇器發送到實例」錯誤是什麼意思?
-[NSCFString count]: unrecognized selector sent to instance 0x612b060
誰能告訴我這是什麼意思,我怎樣可以找到我的代碼行參考0x612b060
你是對一個對象(可能是一個集合,例如數組,字典或集合)調用count
方法,該方法已發佈或尚未初始化。
您在NSCFString發送消息「計數」,是指,要求的NSString數據類型「計數」的方法。
要查找的代碼,你可以使用堆棧跟蹤,但我知道你正在做的是:
上的NSArray或(數組類型),並試圖計算分配的NSString數據。
最有可能出現這種情況是因爲你有一個集合對象(如NSArray中,NSDictionary的),您沒有正確保留。
嘗試使用NSZombies發現得到了釋放的對象。
Get Info
Variables to be set in the environment
創建名爲NSZombieEnabled
變量和其值設置爲YES
。不要忘記激活它。你做了調試這個問題,你應該禁用NSZombies後。 NSZombies不會釋放任何內存,它只是將對象標記爲已釋放。
所以你最終會遲早記憶警告。
您可以簡單地刪除它前面的複選標記來停用NSZombies。
哦,我如何恨評論沒有評論... – 2011-09-14 19:52:40
您的意思是在您的字符串上撥打length
?
也許有人會需要這樣: 當我有這樣的問題,我用: [ myarray retain];
後 myarray = [NSArray arrayWithObjects: ...];
和它的工作。我認爲這是因爲我的陣列太早摧毀了自己。 但我不知道我現在可以釋放這個對象嗎? 只需[myarray autorelease]
?有什麼相反的保留?
歡迎來到StackOverflow。你答案的最後部分是一個問題。請使用主頁上的「Ask Question」按鈕。否則你的問題將不會被社區看到。 – 2011-09-13 09:53:07
與'retain'相反的是'release'。 'autorelease'賦予將保留對象的'release'調用到當前自動釋放池的責任。 – 2011-09-14 10:38:47
一個實際的例子:
有時候,有一個實際的差別,我不瞭解清楚呢。 valueForKey
在SOGo-3.1中不起作用。4代碼試圖調用不可用的「方法」 ASProtocolVersion
的context
對象:
`EXCEPTION: <NSException: 0x55f43f93e4d0> NAME:NSInvalidArgumentException REASON:-[WOContext ASProtocolVersion]: unrecognized selector sent to instance
而objectForKey
作品(而且是elesewhere查詢context
對象的代碼通常的方式)。
哪個編譯器使用? – 2011-03-01 09:35:04
這個問題與[this one](http://stackoverflow.com/questions/3645213)或[許多其他](http://stackoverflow.com/search?q=unrecognized+selector)幾乎相同,你在詢問之前嘗試搜索? – zoul 2011-03-01 09:41:03