Как бы я определил сочетание параметров метода Objective-C? - PullRequest
2 голосов
/ 13 марта 2011

Я хотел бы сделать что-то подобное в моей программе:

[obj list error:&error];

Но когда я пытаюсь определить прототип / метод, я получаю ошибки компиляции.

Я пыталсяследующие определения:

-(void)list error:(NSError **)error;

-(void)list:() error:(NSError **)error;

, кажется, ничего не работает.

1 Ответ

2 голосов
/ 13 марта 2011

Почему в сигнатуре метода пробел между list и error.Если это прототип -

-(void) list_error:(NSError **)error;

list_error ожидает, что ему будет передан адрес указателя.Итак, это должно сработать.

[obj list_error:&ptr] ; // Assuming ptr is of type NSError* and is initialized.

Я думаю, вы сбиты с толку, когда отправляете в метод более одного параметра.Это просто.Подпись метода должна быть -

- (return_type) splitOne: (тип) arg1 splitTwo: (тип) arg2;

- указывает метод экземпляра.То же самое относится и к методу класса, но заменил + вместо -.И так по имени метода можно разделить.

Взяв пример дроби, чтобы задать дробь, ему нужны как числитель, так и знаменатель.Итак,

-(void) setNumerator: (int) n setDenominator: (int) d ; 

И для его вызова -

[ obj setNumerator:10 setDenominator:20 ] ;

Зачем нужно разделять имя метода?

Обычно вC этот прототип функции будет -

void setFraction( int a, int b );

Но при просмотре прототипа неясно, является ли a числителем или знаменателем и совпадает с b.Вот почему в Objective-C имя метода может быть разбито на части.В приведенном выше примере Objective-C и setNumerator, и setDenominator образуют имя метода.И при вызове для пользователя совершенно очевидно, что передается параметр.Надеюсь, это поможет решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...