iOS - 设置 UITextView 的文本会引发 EXC_BAD_ACCESS

Posted

技术标签:

【中文标题】iOS - 设置 UITextView 的文本会引发 EXC_BAD_ACCESS【英文标题】:iOS - setting text of UITextView throws EXC_BAD_ACCESS 【发布时间】:2012-12-24 07:27:54 【问题描述】:

我有一个UITextView,我在以下代码中以编程方式创建了它:

NSLog(@"creating the first blurb");
blurb = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
[blurb setText:total];
blurb.backgroundColor = [UIColor redColor];

其中blurb 定义为@interface 中的UITextView

这就是我遇到问题的地方:

total 是一个NSString,被定义为从指定域的.txt 文件中获取文本。 变异为:

 NSString *url = @"https://sites.google.com/site/paloaltoapps/tbnappsource-password-blackr3d/Updates.txt";
 NSURL *urlRequest = [NSURL URLWithString:url];
 total = [NSString stringWithContentsOfURL:urlRequest encoding:NSUTF8StringEncoding error:nil];

但是,当我运行代码时,我在顶部代码块的 setText: 行中得到了一个 EXC_BAD_ACCESS 实例。

我尝试使用NSLog 语句打印total,这似乎工作得很好。 谁能看到我做错了什么?谢谢。

【问题讨论】:

将简介从 uitextfield 更改为 uitextview 对不起,这只是一个错字 试试这个...可能会失去参考......total = [[NSString stringWithContentsOfURL:urlRequest encoding:NSUTF8StringEncoding error:nil]copy]; 成功了!你想把它放在答案中以便我接受吗? 您应该将其添加为@property 并使用它。否则它会在你使用它之前被释放。在这种情况下不建议使用copy。那和这个有不同的用途。如果您不使用 ARC,retain 可能会更好。 【参考方案1】:

试试这个......可能会失去参考......

total = [[NSString stringWithContentsOfURL:urlRequest encoding:NSUTF8StringEncoding error:nil]copy];

【讨论】:

让我看看我是否正确...copy 允许您复制引用,并将total 的值设置为复制的引用而不是实际值? 确实如此。我只是想了解它为什么解决了这个问题以及这个额外的位对我的代码有什么作用。 实际上有时它会发生并失去它的参考,这就是为什么我们使用复制和保留来保留价值............但我不明白为什么对我的回答投反对票 【参考方案2】:

为什么不尝试创建一个 NSString 并将文本分配给它。然后您可以尝试打印 NSString 并查看是否有效。只是一个建议。

【讨论】:

这就是total 的用途。我将total 分配给stringWithContentsOfURL: 返回的值,然后尝试将blurb 的值设置为该值。它打印出正确的值,但在尝试设置文本时抛出异常。

以上是关于iOS - 设置 UITextView 的文本会引发 EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章

设置标签的文本会导致堆栈视图布局问题

在 UITableview 内的自动调整大小的标签上设置非常长的文本会破坏 NSLayoutConstraint

删除 doOnTextChanged 上的文本会删除我以编程方式设置的编辑文本的特殊格式

如何在Swift中运用Text Kit框架

矩形上的文本会杀死矩形的悬停效果

取巧处理:UILabel(IOS开发) 超出宽度的文本省略号的问题