Почему бы не использовать себя.позвонить в класс - PullRequest
0 голосов
/ 12 октября 2011

Я прочитал руководство по кодам Google и Apple, они оба обращаются к переменным экземпляра без себя. вызов (getter и setter) внутри реализации метода, даже если они объявили свойство для этой переменной экземпляра. Вот почему?

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

Есть ли какое-либо предостережение, чтобы использовать геттер и сеттер внутри класса?

1 Ответ

1 голос
/ 12 октября 2011

Это зависит. Вы всегда должны использовать аксессор при обычном использовании.

Однако для методов init и dealloc вы должны вместо этого использовать прямые ivars для освобождения и установки переменных. Это связано с тем, что сеттеры могут иметь побочные эффекты, которые не следует запускать во время инициализации или освобождения класса.

На практике использование средства доступа как части init, вероятно, не вызовет проблемы. Но я видел ряд реальных сбоев, когда пользовательский установщик не ожидал нулевого значения, и поэтому использование метода доступа в dealloc приводило к сбою приложения. Даже если он не потерпит крах, он может сделать много бессмысленной работы, так как класс должен был умереть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...