Используя "str1" вместо "self.str1", вы не будете использовать свои (предположительно синтезированные) методы доступа для свойства, поэтому управление памятью, которое они осуществляют, не происходит.
Какдополнительное примечание: вы должны быть очень осторожны при использовании метода -retainCount.Cocoa Touch часто делает очень странные вещи с счетом сохранения (сохранение, освобождение и автоматическое высвобождение внутри себя, хранение «специальных» счетчиков хранения для постоянных объектов и т. Д.), Которые затрудняют эффективное использование.
Вместо того, чтобы использовать счет сохранения, я предлагаю подумать об увеличении счетчика хранения (путем -copy, -alloc, -retain, + new или -mutableCopy) в качестве «утверждения права собственности на объект» и уменьшения его(путем -release или -autorelease) как «отказ от владения объектом».Поэтому, если вы всегда владеете каждым объектом, который используете, и отказываетесь от них, когда закончите с ними, вы должны избегать как утечек, так и сбоев.