Вы должны понимать, что использование self.property
- это вызов метода (метод получения или метода установки), а не простое назначение.
Вы должны использовать ivar непосредственно только внутри тела установки или получения.
Причины:
1 / Свойства призваны оградить вас от ада удержания-освобождения.Давайте представим, что у вас есть свойство "assign", вы используете ivar напрямую, а затем решаете изменить его на "retain".То, что вы получаете, - это ошибка, которую трудно найти.
2 / Сеттеры и геттеры могут выполнять дополнительные функции (например, сеттер может добавлять / удалять наблюдателей к объекту) или вести логирование.Если вы используете ivar напрямую, вы упускаете эту специальную функциональность.
3 / Сеттеры и геттеры могут быть переопределены в подклассе.
В небольших проектах вы, вероятно, можете избежать большинства проблем, даже если выиспользуя ivars напрямую, но в больших проектах, запрограммированных командой, вы должны использовать только self.property
, чтобы уменьшить количество ошибок и улучшить сопровождение кода.Также неплохо дать вашему ивару другое имя (например, property_
или _property
, потому что вы заметите, когда используете его без self.
.
Если вы не пишете высокую производительностьигровые или математические алгоритмы, не беспокойтесь о худшей производительности при использовании self.property
.