Это большая проблема в управлении памятью.Если вы используете свойство, то вы можете использовать nil без использования release.Поскольку метод установки свойства работает следующим образом:
- (void)setObjTypes:(NSArray *)ObjTypes {
[ObjTypes retain];
[_ObjTypes release];
_ObjTypes = ObjTypes;
}
Установщики увеличивают счетчик переданной переменной, уменьшают счетчик старой переменной экземпляра, а затем устанавливают для переменной экземпляра значениепереданная переменная.Таким образом, объект правильно имеет счетчик ссылок для объекта, сохраненного в переменной экземпляра, пока он установлен.
Метод сеттера автоматически применяет метод release и затем устанавливает значение переменной экземпляра с помощью nil.Но если вы не используете свойство, то очень приятно, что перед установкой nil мы должны сначала установить release. Если мы установили указатель на nil, это означает, что он не указывает на какой-либо адрес памяти, поэтому, если мы пытаемся получить доступ к этой памяти, используя вышеуказатель то вылетитИ если мы вызываем метод release для переменной экземпляра, он освобождает память.