Не думайте об управлении памятью с точки зрения пулов автоматического выпуска или сохранения количества. Думайте об этом с точки зрения того, являетесь ли вы владельцем объекта или нет. Если вы владеете им, вы несете ответственность за его освобождение.
Обе эти строки создают сохраненные свойства:
@property (nonatomic, copy) NSString *text;
@property (nonatomic, retain) NSString *otherText;
Копия означает только сохранение копии, а не оригинала. Оба эти свойства управляются памятью, поэтому вам не нужно беспокоиться о сохранениях или выпусках при обычном использовании.
self.text = string1; // this retains a copy of string1
self.text = string2 // this releases the copy of string1 and retains the copy of string2
self.text = nil; // this releases the copy of string2
У вас есть self.text и self.otherText, поэтому вам нужно освободить их в dealloc.
Если вы не размещаете, не создаете, не копируете и не сохраняете объект, вы не являетесь его владельцем. Если вы не являетесь его владельцем, но вам нужно гарантировать, что он останется за пределами цикла выполнения, заявите право собственности, сохранив его.