Objective-C 101: точечная запись и свойства объекта - PullRequest
1 голос
/ 08 октября 2009

У меня есть очень простой вопрос относительно свойств в Objective-C.

Я могу получить доступ к свойствам объекта только через точечную запись (Obj.MyProp), если я @synthesize myProp. Это правильно?

Правильно ли будет сказать, что если я буду использовать свой собственный метод установки, я больше не смогу ссылаться на свойство в точечной нотации?

В основном я ищу функциональность типа C #, где я могу написать свой собственный пользовательский метод получения / установки и, в то же время, предоставить дополнительный код, который мне нужно выполнить, когда свойство установлено.

Ответы [ 3 ]

6 голосов
/ 08 октября 2009
Свойство

@ создает автоматические объявления сообщений, так же как и запись

(int)thing;
(void)setThing:(int)value;

@ synthesize автоматически создает реализации, т.е.

(int)thing {
    return thing;
}
(void)setThing:(int)value {
    thing = value;
}

Если вы сами дадите определение, оно переопределит @synthesized версию. Поэтому, пока вы правильно называете метод, он будет работать с или без @synthesize.

Точечная запись работает как с синтезированными, так и с пользовательскими реализациями методов.

3 голосов
/ 08 октября 2009

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

0 голосов
/ 08 октября 2009

Из документов :

@ синтезируют

Вы используете ключевое слово @synthesize, чтобы сообщить компилятору, что он должен синтезировать сеттер и / или геттер методы для собственности, если вы этого не сделаете поставлять их в рамках @implementation блок.

Он синтезирует только если вы их еще не написали. Если вы их написали, они не синтезируются.

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