0

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

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

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

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

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

4

2 回答 2

4

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

于 2012-06-13T23:08:40.027 回答
0

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

@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

谢谢您的帮助!

于 2012-07-11T03:58:37.633 回答