iPhoneOS 3.2
Я использую unarchiveObjectWithFile из NSKeyedUnarchiver: для загрузки пользовательского объекта, который содержит один большой 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];
а теперь сделка ....
- (void) dealloc {
[releasingObject release];
[lingeringData release];
[super dealloc];
}
Перед выпуском:
(gdb) p (int) [(NSData *) lingeringData retainCount]
$ 1 = 1
После того, как:
(gdb) p (int) [(NSData *) lingeringData retainCount]
Цель не отвечает на этот селектор сообщений.