Цель C NSMutableString * свойство сохранить количество странности - PullRequest
0 голосов
/ 05 июля 2010

если я создаю строку nsmutablestring и затем освобождаю ее, не должно ли значение сохранения быть 0?

мой счет остается 1.

NSMutableString *text = [[NSMutableString alloc]init];

[text release];

NSLog(@"retain count %d ", [text retainCount]);

Я что-то упустил?

спасибо.

Ответы [ 3 ]

6 голосов
/ 05 июля 2010

Нет гарантии, что retainCount вернет правильное значение в любой точке в течение жизненного цикла объекта. Если вы создали NSMutableString с использованием [[NSMutableString alloc] init] и один раз вызываете релиз, вы делаете все правильно и не должны об этом беспокоиться.

1 голос
/ 05 июля 2010

Поскольку вы делаете это в целях отладки, я предлагаю вам использовать категории, чтобы добавить тестовый код в существующий класс.Каждый раз, когда вы вручную сохраняете или отпускаете свой объект, вы можете вызывать новые методы и использовать их для отслеживания использования памяти.

1 голос
/ 05 июля 2010

Apple в своей документации заявляет, что retainCount не используется в целях управления памятью, потому что платформы и пулы автоматического выпуска могут удерживать объект, даже если вы его освободили.http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/retainCount

...