Objective-C / iPhone:改变TextView.text问题

时间:2010-11-26 15:00:38

标签: iphone objective-c

为什么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它可以工作但是当我尝试调用合并的字符串时它不起作用。我是否忘记了指针?

2 个答案:

答案 0 :(得分:0)

如果您希望txtviewDidLoad结束后保持活着,则必须保留{{1}}。

答案 1 :(得分:0)

stringByAppendingString返回自动释放的字符串,因此您必须保留它。名称以类名开头的所有方法始终返回自动释放对象。