問題很簡單。我需要發佈一個NSLocalizedString嗎?例如:我必須發佈一個NSLocalizedString嗎?
NSString *internetMessageTitle = NSLocalizedString(
@"You are currently not connected to a internet network"
@"Title of the message that tells the user there is no internet network");
因爲我這樣做:
NSLog(@"Retain count of InternetMessageTitle is: %d",
[internetMessage retainCount]);
但它打印爲2的保留數不過我已經閱讀了retainCount屬性不是很可靠。我應該釋放兩次嗎?
是的,我已閱讀內存管理規則和文檔指南,但我沒有看到任何跡象表明NARC(NewAllocRetainCopy)。我仍然是初學者,所以我不知道NSLocalizedString如何創建字符串。
謝謝!編輯1:我在UIAlertView中使用這個變量我不知道當我使用它時,retainCount是否增加。即使不使用警報(在if內部,並且如果忽略它,它也不會被使用),根據NSLog,retainCount仍然是2。
那麼爲什麼是retainCount 2?或者它只是誤導?如果我釋放它,爲什麼它不會崩潰? – Joze 2011-03-02 08:52:38
'retainCount'應該很少用於調試。如果你看看Apple自己的文檔,你會發現它通常不是很有用。 – lxt 2011-03-02 08:56:28
我猜:1保留 - 用於創建(將由autorelease池處理),第二個保留 - 通過警報標籤 - 將在標籤析構函數中處理。不知道爲什麼你不會崩潰...可能警覺不會在那個時候被釋放 - 你的程序可能會在稍後崩潰,比如在警報關閉後(如此調用dealloc方法) – Vladimir 2011-03-02 08:57:07