我是Objective-C的新手,但我正在慢慢取得进展。我想要做的就是在当前字符串中添加一个新字符串。我需要为NSURLConnection
执行此操作,以便将所有数据放入一个字符串中。我目前有这样的东西,但它确实有效,我不完全理解为什么以及我需要做些什么来解决它。
NSString *temp = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
html = [htmlTemp stringByAppendingString:temp];
htmlTemp = html;
感谢您的帮助,我确信它与记忆有关,但我也不完全理解。
答案 0 :(得分:1)
StringByAppendingString
是一种方便的方法,它不以“new”开头或包含“alloc”或“copy”,返回的字符串最有可能在下一个运行周期autoreleased
,这是为什么当你试图从html再次阅读它时,它已经被释放了。要解决此问题,您可以发送copy
这样的消息:
htmlTemp = [html copy];
我建议让htmlTemp成为这样的属性:
@property (nonatomic, copy) NSString *htmlTemp;
这种方式当您为其分配新值时,使用setter,旧值将被释放,然后以指向新值的方式执行:
self.htmlTemp = [htmlTemp stringByAppendingString:temp];