私は奇妙な状況にあり、誰かが光を当ててくれることを願っています。カスタム オブジェクトにプロトコルを実装していNSCoding
ますが、 でメモリ リークが発生していinitWithCoder:
ます。私はこのようなものを持っています:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
if(titleTemp) {
[self setTitleString:titleTemp];
} else {
[self setTitleString:[NSString string]];
}
このオブジェクトには他にも多くのプロパティがあり、配列、文字列、プリミティブ (double、int) などがありますが、このメソッドでは一貫してメモリ リークが発生しています。decodeObjectForKey:
インスツルメンツは、ライン上の各デコードでリークが発生することを教えてくれます。10 個以上のオブジェクトの配列内の各カスタム クラス内のすべてのデコードされたオブジェクトをリークすると、メモリが増加し始めます。
しかし、本当に困惑したのは、このコードの出力:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
NSLog(@"%i", titleTemp.retainCount);
は「3」です!
うわー、それらのすべての保持はどこから来ているのですか? 私を殴る。しかし、これらすべてのリークについて知りたいです。ありがとう!