Цель C: @property (retain) не вызывает retain? - PullRequest
0 голосов
/ 13 августа 2010

Я пытался отследить ошибку выделения памяти, поэтому я переопределил методы сохранения и освобождения моего класса.Я заметил, что при назначении экземпляра этого класса свойству другого счетчик сохранения объекта увеличивался, но мое переопределенное сохранение никогда не вызывалось.

Как это возможно?Сохраняют ли (сохраняют) свойства объект без вызова retain?

Ответы [ 4 ]

3 голосов
/ 13 августа 2010

В моей машине вызывался переопределенный retain.(Я использую 10.6.4. Я проверял это как в GCC 4.2.1, так и в clang 1.5.) Не могли бы вы опубликовать свой код?

Внутренне синтезированный установщик для свойства retain использует objc_setProperty, исходный код которого доступен здесь .Как видите, в конечном итоге он вызывает [newObject retain], когда свойство использует retain.

0 голосов
/ 17 июля 2012

, если вы не используете self (self. yourproperty ), это не увеличит количество сохраненных файлов.

0 голосов
/ 13 августа 2010

Сборка мусора включена? Я не верю, что retain называется GC.

0 голосов
/ 13 августа 2010

Я не удивлюсь, если синтезированные свойства изменят счет сохранения без вызова сохранения или освобождения.

...