NSLocalizedStringFromTable

NSLocalizedStringFromTable

我使用txts文件中的按钮文本创建UIActionSheet。在将NSZombieEnabled,NSDebuEnabled设置为YES并将NSDeallocateZombies设置为NO之后,我得到一个断点消息:



这是在第三次或第四次显示UIActionSheet之后而不是立即显示。发生这种情况的代码是:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringFromTable( @"text", @"class", @"text" )
                                                        delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil
                                                        otherButtonTitles:NSLocalizedStringFromTable( @"text1", @"class", @"text1" ),
                                                            NSLocalizedStringFromTable( @"text2", @"class", @"text2" ),
                                                            NSLocalizedStringFromTable( @"text3", @"class", @"text3" ), nil];
[actionSheet showFromTabBar:self.tabBarController.tabBar];
[actionSheet release];

如果删除NSDealocateZombies,模拟器中不会再发生崩溃,但是在控制台中会收到警告:



你遇到过这样的问题吗?从资源中反复获取字符串是否错误?作为最后的解决方案,我正在考虑将它们一次放入成员变量中,从而避免对同一文本再次调用NSLocalizedStringFromTable。

最佳答案

最终在其他地方发现了问题:通过NSLocalizedStringFromTable获得的NSString后来被发布为,尽管并没有保留。有趣的是,崩溃是在完全不同的类中的系统框架内发生的。
因此看来,过度放贷毕竟是原因。

09-03 18:47