Я только начал изучать Objective-C, и я не уверен, когда использовать запись через точку или квадратные скобки. Я знаю, что аналогичный вопрос был задан здесь но я так и не понял разницы. Я читал, что [myObject doSomething]
и myObject.doSomething
эквивалентны. В чем я не уверен, так это в том, что когда я использую @property
для создания метода, он автоматически генерирует метод установки, который я могу использовать только с квадратными скобками.
// MyClass.h
@interface MyClass : NSObject
@property int number;
// main.m
MyClass *object = [[MyClass alloc] init];
[object setNumber:3];
object.setNumber = 4; // Property 'setNumber' not found
Почему я получаю сообщения об ошибках, когда пишу object.setNumber = 4
, и почему я могу использовать для этого только квадратные скобки?
set
в точечной нотации. Это почему? Компилятор генерирует обычный вызов метода из записи через точку. Итак, если вы пишетеobject.number = 4;
, компилятор генерирует[object setNumber:4];
. Вот почему это не работает, когда вы пишетеobject.setNumber = 4;
, потому что компилятор генерирует[object setSetNumber:4];
, а этого метода не существует. - person HAS   schedule 14.04.2014