Нет, они не одинаковы.В предоставленном вами коде textField.text
преобразуется в [textField text]
, то есть получает свойство text
объекта, на который указывает ивар textField
.self.textField.text
, с другой стороны, преобразуется в [[self textField] text]
, то есть вызывает метод доступа textField
текущего объекта и вызывает метод доступа text
результата.
Конечный результат обычно должен быть таким же,Было бы несколько странно иметь и ивар и свойство с именем textField
и иметь свойство, возвращающее что-то отличное от ивара.
Являются ли эти два эквивалента?Является ли self ненужным, так как уже существует точечная нотация, которая уже использовала бы методы get?
Как объяснено выше, результаты аналогичны, но смысл другой.Использование метода доступа (то есть self.textField.text
) является предпочтительным стилем, но добавление префикса ко всему с помощью self.
также может показаться немного утомительным.Одно из возможных решений, если вы собираетесь использовать свойство несколько раз, - это вызвать метод доступа к свойству один раз и сохранить результат в локальной переменной.