У меня есть класс, который является подклассом NSOperation (фактически подклассом ASIHTTPRequest, который является подклассом NSOperation).
Instruments сообщает об утечке памяти в __NSOperationInternal с помощью этого стека вызовов:
0 libSystem.B.dylib calloc
1 libobjc.A.dylib _internal_class_createInstanceFromZone
2 libobjc.A.dylib class_createInstance
3 CoreFoundation +[NSObject(NSObject) allocWithZone:]
4 CoreFoundation +[NSObject(NSObject) alloc]
5 CoreFoundation +[NSObject(NSObject) new]
6 Foundation -[NSOperation init]
7 MyApp -[JSONRequest init] JSONRequest.m:26
init и dealloc JSONRequest выглядят так:
- (id)init
{
if ((self = [super init]))
{
[self setDidFinishSelector:@selector(JSONFinished:)];
[self setDidFailSelector:@selector(JSONLoadFailed:)];
}
return self;
}
- (void)dealloc {
[super setDelegate:nil];
[super dealloc];
}
Я не вижу в своем коде ошибки, которая могла бы вызвать это. Это может быть ложная утечка, или у кого-нибудь есть идея, что может быть не так с кодом? (Существуют ли какие-либо руководящие принципы для определения, является ли утечка, сообщенная приборами, ложной или нет?)
Это единственная сообщаемая утечка (т.е. ни одно из свойств объектов не просачивается), но эта утечка сообщается несколько раз во время выполнения моего приложения.