2012-05-08 3 views
0

В Xcode, освобождая объект в методе dealloc, как [self.object release], эта строка отображается как утечка памяти с использованием статического анализатора кода, но не отображается как утечка во время работы инструментов.Статический анализатор - утечка памяти

Вот мой вопрос, что это отличается BWN [self.object release] и просто [object release]

Просьба разъяснить это,

Спасибо заранее.

ответ

3

self.object фактически вызывает метод получения ([self object]), который возвращает экземпляр переменной object (или в зависимости от того, как синтезируется), но переменная экземпляра фактически имеет нераспределенный объект, так что вы должны сделать [object release]. Это хорошая практика, чтобы синтезировать свои свойства с: @synthesize object = _object, чтобы вы не запутались собственность и переменного экземпляр - ваша собственность будет self.object, но переменная экземпляра будет _object и вы будете называть [_object release];

+0

спасибо, что очень полезно. – nik

3

а не делать -

[self.object release] 

вам нужно сделать -

self.object = nil; or [object release]; 

[выпуск self.object] пошлет вызов выхода на объект, возвращаемый добытчика имущества. И результат будет зависеть от того, определено ли свойство как присваивание/копирование/сохранение.