私はコードのリークをチェックするためにInstrument leaksツールを使用しています。NSMutableArrayは、装置によってアドレス指定された警告を漏らします。
//MyClass.h
@property (nonatomic, retain) NSMutableArray *marrProperty;
//MyClass.m
NSSortDescriptor *createdTime = [[NSSortDescriptor alloc] initWithKey:@"createdTime" ascending:NO selector:@selector(compare:)];
NSArray *sortedArray = [self.anManagedObj.aRelationships sortedArrayUsingDescriptors:[NSArray arrayWithObject:createdTime]];
[createdTime release];
NSMutableArray *marr = [[NSMutableArray alloc] initWithArray:sortedArray];
self.marrProperty = marr;
[marr release];
インストゥルメントの漏れツールで確認した後、私はリークが次のコードで起こったと言われました:
NSMutableArray *marr = [[NSMutableArray alloc] initWithArray:sortedArray];
self.marrProperty = marr;
私はなぜ知らない、私はただのallocとも離しているため。
まあ、なぜ私はすべてのヒープショットにNSMutableArrayがないのかわかりません。 –
あなたは1つしか漏れていない可能性があります。したがって、その1つをクリックし、保持/解放履歴をチェックして、余分な保持がどこから来ているかを確認します。 – bbum
追跡には、(イベントタイプ、RefCt)、(Malloc、1)、(Retain、2)、(リリース1) –