2010-11-23 3 views
4

Если я использую @synthesize foo;, в чем разница между следующими:Objective-C: синтаксис синтаксиса сообщения против синтаксиса точки; какая разница?

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

и

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

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

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

ответ

12

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

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

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

+2

согласовано. Придерживайтесь тем или иным. Я предпочитаю использовать точечный синтаксис, потому что он говорит мне, что я делаю то, что, вероятно, сохранит или скопирует объект. – 2010-11-23 19:39:03

3

Это то же самое.

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

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

Но по существу вызовы являются одинаковыми.

Смежные вопросы