【问题标题】:NSMutableString stringWithString giving crashNSMutableString stringWithString 给崩溃
【发布时间】:2012-01-15 13:45:46
【问题描述】:
ten.textValue = [[NSMutableString alloc]init];
ten.textValue = [NSMutableString stringWithString:textField.text]; 

我在第二行崩溃了。
ten.textValue is NSMutableString

【问题讨论】:

  • 为什么分配一个全新的NSMutableString 只是为了在下一行覆盖它?
  • 评论它也让我崩溃了。
  • “十”和“文本字段”对象是否直接通过 IB 分配或设置?
  • 你可以使用 ten.textValue =textField.text;
  • 什么崩溃?您需要在问题中提供更多细节,而不仅仅是说“帮助,它崩溃了”。

标签: iphone nsmutablestring


【解决方案1】:

这可能是因为UITextFieldis nil by defaulttext 属性,并将nil 传递给[NSMutableString stringWithString:nil] 导致崩溃。

你需要确保text不是nil当你传递它被复制,例如这样:

[NSMutableString stringWithString: textField.text ? textField.text : @""]

您还应该删除第一行 - 它没有任何作用,因为分配和分配的值会立即被覆盖。

【讨论】:

  • 没有。 textfield text 不是 nil,因为上面的代码在 textFieldShouldReturn 中。我正在获取文本字段文本。
  • @Nitish 您是否尝试更改第二行?你还遇到崩溃吗?
【解决方案2】:

当您创建 ten.textValue = [[NSMutableString alloc]init]; 时,您正在创建一个您拥有的对象。

当您尝试在下一行中添加一个字符串时,您正在创建一个自动释放的字符串。这让编译器感到困惑,编译器会报告“挂起 - 这是一个已分配的、拥有的对象”。

改为:

if(ten.textValue)
{
    ten.textValue = [NSMutableString stringWithString: textField.text]};
}

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多