Может быть, было бы полезно сравнить между "c-like" языком и obj-c - давайте перейдем к Java. Представьте класс Rectangle с помощью метода setBackgroundColor. Предположим, у нас есть экземпляр Rectangle с именем rect.
В Java сигнатура метода, скорее всего, будет
public void setBackgroundColor(int r, int g, int b) { ... }
В Objective-C аргументы являются частью сигнатуры метода, поэтому это может быть
- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;
«-» означает, что это метод экземпляра в классе Rectangle. (void) - тип возвращаемого значения метода. Тогда приходят аргументы. Каждое двоеточие определяет аргумент, который набирается (каждый аргумент (int) в этом примере).
Давайте сравним вызов этих методов. Java:
rect.setBackgroundColor(255, 255, 0);
Obj-C:
[rect setBackgroundColorWithRed:255 green:255 blue:0];
Многие люди натыкаются на синтаксис obj-c - вы не одиноки. Надеюсь, это сравнение сделает вещи более понятными. Это также иллюстрирует лингвистическую силу target-c: во время вызова ясно, каковы ваши аргументы. Если бы я читал код и увидел вызываемый метод Java, не было бы очевидно, что аргументы бывают красного, синего и зеленого цвета. В obj-c до боли ясно, что мы устанавливаем индивидуальные значения цвета. Конечно, большинство разработчиков могут догадаться, каковы три аргумента метода setColor, но более сложные методы приводят в замешательство. Вот более сложный метод, определенный в Java и target-c:
static Dog createDog( String name
, int age
, boolean isNeutered
, String ownerName
);
+ (Dog *)createDogNamed:(NSString *)name
age: (int) age
neutered:(BOOL) isNeutered
owner: (NSString *) owner;
Во время разговора:
Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];
Objective-c более многословен, но гораздо более читабелен. В примере с Java не совсем понятно, что означают аргументы «2» и «true». Objective-c почти читает как английский.
Другие люди разместили ссылки на более подробные руководства, но я надеюсь, что это поможет вам преодолеть синтаксические камни преткновения, чтобы сделать ссылки полезными. Я рад ответить на более конкретные вопросы, которые у вас есть. По моему опыту, новичкам в obj-c действительно тяжело с синтаксисом, а затем он нажимает с и чувствует себя великолепно. Держись там!