【发布时间】:2015-05-21 10:45:11
【问题描述】:
我想确保我的代码没有泄漏,因为这个小 sn-p 在我的应用程序中被调用了数千次。我通过 Instruments 运行应用程序,而 initWithBytes 似乎有问题。这段代码有什么问题吗?
第一个 [reader readString] 被调用。
case FirstCase:
{
NSString *string = [reader readString];
[self setPropertyByName:propertyName value:string];
break;
}
...
readString 返回自动释放的字符串。
- (NSString*) readString
{
...
NSString *string = [[[[NSString alloc] initWithBytes:cursor length:stringLength encoding:NSUTF8StringEncoding] autorelease];
return string;
}
代码正常吗?还有其他更好的方法来避免自动释放吗?
我无法将代码更改为 ARC。普通旧的非 ARC 内存管理。
【问题讨论】:
-
你为什么不用ARC
-
我同意布莱恩的观点。请帮自己一个忙,阅读 ARC,它是在 iOS 4 中引入的,绝对没有理由不使用它。
-
请发布完整的
readString方法,最后两行看起来没问题。 -
ARC 将在不久的将来使用。我不能在最后一分钟的补丁中使用它。
标签: ios objective-c iphone memory-management memory-leaks