Вопрос прост. Мне нужно выпустить 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 создает строки.
Спасибо!
EDIT1: Я использую эту переменную в UIAlertView. Я не знаю, увеличивается ли значение keepCount там, когда я его использую. И даже когда предупреждение не используется (внутри if, а если пропущено, то оно не используется). SaveCount по-прежнему 2 согласно NSLog.
Тогда почему saveCount 2? Или это только вводит в заблуждение? И почему он не падает, если я его отпущу? – Joze
'keepCount' должен редко, если вообще когда-либо, использоваться для отладки. Если вы посмотрите на собственную документацию Apple, вы поймете, что это часто не очень полезно. – lxt
Я предполагаю: 1 сохранить - для создания (будет обрабатываться пулом авторезистов), 2-й знак сохранения - по предупреждению - будет обрабатываться в деструкторе меток. Не уверен, почему вы не получаете аварии ... может быть, предупреждение не освобождается в то время - ваша программа может, вероятно, сбой позже, скажем, после того, как предупреждение закрыто (и поэтому вызван его метод dealloc) – Vladimir