苹果操作系统 3.2
我使用 NSKeyedUnarchiver 的 unarchiveObjectWithFile: 来加载一个自定义对象,该对象包含一个大的 NSData 和另一个小得多的对象。我的自定义对象中的 dealloc 方法被调用, NSData 对象被释放,它的 retainCount == 1 之前。物理内存不会减少任何数量,更不用说 NSData 大小的一小部分了,并且可以可靠地生成重复内存警告:我进行了测试,直到我实际收到 2 级警告。=(
NSString *archivePath = [[[NSBundle mainBundle] pathForResource:@"lingering"]
ofType:@"data"] retain];
lingeringDataContainer = [[NSKeyedUnarchiver unarchiveObjectWithFile:archivePath] retain];
[archivePath release];
[lingeringDataContainer release];
现在是dealloc ....
- (void) dealloc {
[releasingObject release];
[lingeringData release];
[super dealloc];
}
发布前:
(gdb) p (int) [(NSData *) lingeringData retainCount]
$1 = 1
后:
(gdb) p (int) [(NSData *) lingeringData retainCount]
目标不响应此消息选择器。