У меня трудное время для понимания сигнатур методов в Objective-J / Objective-C - PullRequest
0 голосов
/ 18 декабря 2010

Мне трудно понять сигнатуры методов в Objective-J (но в Objective-C должно быть так же).

Синтаксис должен быть:

-(return_type)instanceMethod1:(param1_type)param1_varName :(param2_type)param2_varName;

Тип указан в скобках.Однако я нашел следующую строку кода:

1)

var navigationArea = [[CPView alloc] initWithFrame:CGRectMake(0.0, 0.0, 150.0, CGRectGetHeight([contentView bounds]) - 150.0)];

Почему параметры передаются в скобках?Я думал, что вы указываете параметры после двоеточия ":".

2)

-(void) importDocumentWithName:(NSString *)name withSpecifiedPreferences:(Preferences *)prefs beforePage:(int)insertPage;

что такое "withSpecifiedPreferences"?Это описание?Какая от этого польза?

спасибо

Ответы [ 2 ]

3 голосов
/ 18 декабря 2010

1) показывает сочетание двух стилей, вызовы метода в стиле Objective-C:

[[CPView alloc] initWithFrame:...];

и вызовы в стиле C:

CGRectMake(1, 2, 3, 4);

Objective-J - это строгий супер-набор JavaScript, что означает, что вы можете использовать синтаксис передачи сообщений в дополнение к синтаксису вызова функций в стиле C, который есть в JavaScript.1012 *, withSpecifiedPreferences: является частью имени метода (или «селектора»), см. «Синтаксис сообщения» .

1 голос
/ 18 декабря 2010
  1. Поскольку CGRectMake() и CGRectGetHeight() являются функциями C, а не методами Objective-C или Objective-J. Параметры передаются через запятую в скобках для вызовов функции C.

    Результат CGRectMake() затем передается в качестве параметра в метод initWithFrame: класса CPView, который является методом Objective-C.

  2. Что касается вашего второго вопроса, я раньше не видел этот метод, поэтому не могу точно сказать, для чего используется параметр prefs ...

...