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