проверить сохранить счет - PullRequest
       30

проверить сохранить счет

1 голос
/ 20 августа 2011

Я делаю это:

UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mainback.jpg"]];

[self.view addSubview:backgroundImage];
NSLog(@" retain count1 : %d " , [backgroundImage retainCount]);
[self.view sendSubviewToBack:backgroundImage];

[backgroundImage release];
NSLog(@" retain count2 : %d " , [backgroundImage retainCount]);

Я получил

retain count1 : 2 
retain count2 : 1

1) в функции деалека, могу ли я получить сообщение как:

- (void)dealloc{

NSLog(@" retain count2 : %d " , [backgroundImage retainCount]);
[super dealloc];
}

И 2) наконец я получил счет 1 для backgroundimage , так что все в порядке или должно быть 0 (ноль) ??

Спасибо..

1 Ответ

3 голосов
/ 20 августа 2011

Согласно Apple Docs ,

Метод retainCount не учитывает ожидающий авто-релиз сообщения, отправленные получателю.

Важно: Этот метод обычно не имеет значения в отладочной памяти вопросы управления . Потому что любое количество объектов каркаса может иметь сохранил объект для хранения ссылок на него, в то время как на В то же время пулы авто-релиза могут содержать любое количество отложенных релизы на объекте очень маловероятно, что вы можете получить полезную информацию информация из этого метода . Чтобы понять основные правила Управление памятью, которое вы должны соблюдать, прочитайте «Управление памятью» Правила». Для диагностики проблем управления памятью используйте подходящий инструмент: Статический анализатор LLVM / Clang обычно может найти управление памятью проблемы даже до запуска вашей программы. Инструмент Object Alloc в приложении Инструменты (см. Руководство пользователя инструментов) можно отслеживать размещение и уничтожение объектов. Акула (см. Руководство пользователя Акулы) также профили распределения памяти (среди множества других аспектов вашего программа).

...