我有一个奇怪的情况,我希望有人能解释一下。我NSCoding
在自定义对象中实现协议,并且在initWithCoder:
. 我有这样的事情:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
if(titleTemp) {
[self setTitleString:titleTemp];
} else {
[self setTitleString:[NSString string]];
}
我有这个对象的许多其他属性,一些是数组、一些字符串和一些原语(双精度数、整数),并且我一直在这种方法中遇到内存泄漏。Instruments 告诉我泄漏发生在每个解码decodeObjectForKey:
线上。当您在 10 多个对象的数组中泄漏每个自定义类中的每个解码对象时,内存开始增加。
但真正让我难过的是这段代码的输出:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
NSLog(@"%i", titleTemp.retainCount);
是“3”!
哇,所有这些保留来自哪里?打败我。但我很想知道所有这些泄漏。谢谢!