我想在我的程序中做这样的事情:
[obj list error:&error];
但是当我尝试定义原型/方法时,我遇到了编译错误。
我尝试了以下定义:
-(void)list error:(NSError **)error;
-(void)list:() error:(NSError **)error;
似乎没什么用。
答案 0 :(得分:2)
为什么方法签名中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 :( type)arg1 splitTwo :( type)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
都形成了方法名称。在调用时,对用户来说很明显,传递的参数是什么。希望它有助于解决您的问题。