Что такое retainCount в Objective-C? - PullRequest
12 голосов
/ 30 июля 2009

У меня UITableView как мой первый экран с UINavigation контроллером.

На моем первом экране я NSLog(@"Home Screen retain Count=%d",[self retainCount]); и он регистрируется 6, когда вызывается его viewDidLoad.

Это правильно?

Ответы [ 2 ]

15 голосов
/ 30 июля 2009

retainCount - это число претензий в отношении владения, которые находятся в обращении на объекте.

Вы вступаете во владение объектом, если создаете его с помощью метода, имя которого начинается с «alloc» или «new» или содержит «copy» (например, alloc, newObject или mutableCopy), или если вы отправляете ему сохранить сообщение. Все они увеличивают retainCount.

Вы отказываетесь от прав собственности с помощью «release» или «autorelease». Они уменьшают retainCount.

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

Если вы смотрите на retainCount, вы поступаете неправильно, и вы просто запутываете себя.

1 голос
/ 30 июля 2009

Звучит нормально. Почему это было бы неправильно?

В общем, попытка определить вещи по счету удержания - плохая идея. Не существует правил, сколько раз вы можете сохранить объект. Единственное правило заключается в том, что каждое удержание должно быть сбалансировано с выпуском.

...