iOS - лучше ли использовать методы getter / setter напрямую или свойства - PullRequest
4 голосов
/ 28 марта 2012

Я знаю, что свойства вроде инкапсулируют методы получения и установки. Поэтому всякий раз, когда мы говорим myObject.property1 мы фактически вызываем для вызова [myObject property1]. Из документации Apple, курсов Stanford для iOS и примеров кодов видно, что использование свойств приветствуется. Я согласен, что использование свойств делает код лучше и понятнее, но как насчет производительности? Если я напишу огромное приложение, будет ли использование свойств заметно влиять на производительность? Профессионалы обычно предпочитают методы или свойства прямого установщика и получателя?

Ответы [ 5 ]

3 голосов
/ 28 марта 2012

Нет никакой разницы в производительности, когда вы используете скобочную запись ([myObject property1]) или . (myObject.property1).

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

2 голосов
/ 28 марта 2012

Свойства, вероятно, лучше, потому что они автоматически генерируют методы для вас, и когда вы их синтезируете, вы можете сделать это следующим образом:

@synthesize property = _property

Чтобы избежать путаницы

Также вы можете выбрать различные функции / методы, такие как:

           (nonatomic, retain) // or (readonly) etc.

Он также лучше обрабатывает память

1 голос
/ 28 марта 2012

Когда вы используете объявленные свойства, геттер и сеттер генерируются во время компиляции, поэтому это никак не влияет на производительность по сравнению с объявлением вашего геттера и сеттера самостоятельно.

ср.http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html

1 голос
/ 28 марта 2012

Синтаксис свойства преобразуется непосредственно в вызовы получателя / установщика.Я понятия не имею, что дольше компилируется или если есть разница, но когда программа выполняется, выполнение кода остается тем же.

1 голос
/ 28 марта 2012

Свойства определенно предпочтительны.Кстати, это оператор @synthesize, который автоматически генерирует геттеры и сеттеры.Мне не известны отчеты, которые подтвердили бы изменения производительности с помощью сеттеров / геттеров.

...