Objective-C: синтаксис сообщения против точечного синтаксиса; какая разница? - PullRequest
4 голосов
/ 23 ноября 2010

Если я использую @synthesize foo;, в чем разница между:

// message syntax
[myObj setFoo:5];
[myObj foo];

и

// dot syntax
myObj.foo = 5;
myObj.foo;

Мне нравится согласованность точечного синтаксиса, но я не знаю, делает ли он что-то, что меня должно беспокоить.

Любая дополнительная информация будет очень полезна.

Ответы [ 2 ]

12 голосов
/ 23 ноября 2010

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

Я считаю, что использование синтаксиса сообщений более соответствует языку в целом и что точечный синтаксис был просто реализован для удобства программистовкоторые приходили с языков, которые его использовали (на ум приходит Java).

Все, что я спрашиваю, это: какой бы вы ни выбрали, будьте согласны с ним. Не смешивайте и не сопоставляйте одиночные установщики свойств !(Установщики с несколькими аргументами явно освобождены).

3 голосов
/ 23 ноября 2010

Они одинаковы.

Синтаксис точки используется для обозначения доступа к @property, к которому вы также можете получить доступ через:

[myObject setValue: [NSNumber numberWithIntValue:5] forKey:@"foo"];
[myObject valueForKey:@"foo"];

Но по сути звонки одинаковы.

...