Почему в сигнатуре метода пробел между 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
образуют имя метода.И при вызове для пользователя совершенно очевидно, что передается параметр.Надеюсь, это поможет решить вашу проблему.