NSString中的内存泄漏,NSArray



我正在开发一个自定义框架(当然,还有一个CocoaTouch应用程序来测试它)。这是一个大框架,因此不可能在这里发布它(除了它不是开源的,不是我的错,我发誓!

我已经尝试了一段时间,但我不可能找到答案:仪器指责我的应用程序中存在一些泄漏。我真的是新手,所以,我不知道我是否误解了报告,但似乎方法像

[NSArray array]
[NSString stringWithCString:encoding:]
[NSString stringWithFormat:]
[NSString stringWithUTF8String:]
[_obj_rootAlloc]
[__NSArrayM]

是一些主要原因,这对我来说真的没有任何意义。

在此链接中,您可以找到仪器的运行报告。谁能看一看,看看这是否意味着什么?

Instruments 报告泄漏对象的创建位置,而不是它们成为官方泄漏的时间点。在某个地方,使用这些方法创建的对象要么被过度保留,要么在应该释放的时候没有释放。

实际问题是我对合成属性所做的假设。我有这样的东西:

@interface MyClass : NSObject
@property(nonatomic,retain) NSString *myProperty;
@end

在实施中:

@implementation MyClass
@synthesize myProperty=_myProperty;
@end

我以为@synthesize也会autorelease财产,但这是我的错误。我修复了它:

@implementation MyClass
@synthesize myProperty=_myProperty;
-(void)dealloc
{
    [_myProperty release];
    [super dealloc];
}
@end

感谢您的帮助!

最新更新