问题很简单。我需要发布一个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