propertyWithRetain = obj;
Это просто устанавливает ivar, напрямую поддерживающий свойство.Когда @property синтезируется, если не объявлена переменная экземпляра, она генерируется автоматически.Выше приведено непосредственное использование этого ивара.
self.propertyWithRetain = obj;
Это на самом деле пройдет через установщик @synthesize
d и увеличит счет сохранения.
Именно поэтому многие из нас используют @synthesize propertyWithRetain = propertyWithRetain_;
чтобы именовать iVar по-другому.
Обратите внимание, что даже в этом случае вызов retainCount
может быть ужасно вводящим в заблуждение.Попробуйте это с [NSNumber numberWithInt: 2];
или постоянной строкой.На самом деле, не звоните retainCount
.Не когда-либо.