我有點通過以下行爲,我編爲iPhone模擬器(或設備)的Xcode項目中看到的困惑:Objective-C的內存問題(iPhone)
NSString *test = [[NSString alloc] initWithCString:"foo"];
NSLog(@"test retain count = %d", [test retainCount]); // prints 1
[test release];
NSLog(@"test retain count = %d", [test retainCount]); // also prints 1 instead of 0
然而,任何進一步嘗試訪問'測試'導致Xcode環境崩潰,無論是另一個[test retainCount]
NSLog語句或其他(即使只檢查測試是否等於零)。
想法?在簡單的基於視圖的測試項目中編譯...代碼存在於項目的applicationDidFinishLaunching方法中。
澄清 - 我不知道在實踐中做到以上幾點。這只是一個測試,看看爲什麼在某些調試情況下,保留數爲1並不真實反映對象的真實狀態。感謝您的迴應。這只是一個測試存根,看看爲什麼我在幾個案例中看到某些行爲。我真正想要做的是追蹤一個非常小的內存泄漏(0.06MB),每當我銷燬/重新創建自定義視圖時,都會一直創建它。
那麼這正是我使用保留計數 - 作爲調試幫助。我正在平衡我的alloc調用等。我只是想進一步檢查事情,以幫助跟蹤我在類dealloc()方法中遇到的問題。 – 2009-02-26 21:03:28
「保留計數是一種調試幫助」。不,他們是**不是**調試幫助。 – 2011-08-18 12:21:36