为什么2个字符串仅在第一次运行时连续?
- (void)viewDidLoad {
NSInteger tmpCurrImg = 1;
NSString *tmp1 = [[[someclass instance] getSomeValAtPos:tmpCurrImg];
NSString *tmp2 = [[[someclass instance] getOtherValAtPos:tmpCurrImg];
txt = [tmp1 stringByAppendingString:tmp2];
}
txt是标头中定义的NSString。 Singleton运行良好,tmp1和tmp2指向我想要的。 SegmentedControl启动此功能:
- (IBAction)changeText {
if (txtChooser.selectedSegmentIndex == 0) {
txtView.text = txt;
}
if (txtChooser.selectedSegmentIndex == 1) {
txtView.text = txt;
}
}
当我启动此视图时,它会显示2个合并的字符串。当我使用SegmentedControl按钮切换回此视图时,应用程序崩溃。如果我只使用tmp1或tmp2它可以工作但是当我尝试调用合并的字符串时它不起作用。我是否忘记了指针?
答案 0 :(得分:0)
如果您希望txt
在viewDidLoad
结束后保持活着,则必须保留{{1}}。
答案 1 :(得分:0)
stringByAppendingString返回自动释放的字符串,因此您必须保留它。名称以类名开头的所有方法始终返回自动释放对象。