Подтвердить что ты не робот

Что такое saveCount в Objective-C?

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

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

Правильно ли это?

4b9b3361

Ответ 1

KeepCount - это количество претензий на право собственности на объект.

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

Вы отказываетесь от владения с использованием "выпуска" или "авторекламы". Эти декременты сохраняются.

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

Если вы смотрите на saveCount, вы делаете неправильный путь, и вы просто будете путать себя дальше.

Ответ 2

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

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