Objective c 目标C.奇怪的语法
我发现了一种在Objective C中声明方法的奇怪方法 .h文件中的方法声明:Objective c 目标C.奇怪的语法,objective-c,Objective C,我发现了一种在Objective C中声明方法的奇怪方法 .h文件中的方法声明: -(void)methodName:(NSString *)str, int i; .m文件中的方法实现: -(void)methodName:(NSString *)str, int i { NSLog(@"str = %@, int = %d", str, i); } 我可以这样调用此方法: [self methodName:@"stringExample", 99]; 它会很好的工作 我的问题
-(void)methodName:(NSString *)str, int i;
.m文件中的方法实现:
-(void)methodName:(NSString *)str, int i
{
NSLog(@"str = %@, int = %d", str, i);
}
我可以这样调用此方法:
[self methodName:@"stringExample", 99];
它会很好的工作
我的问题是什么时候应该使用这种语法。它和通常的声明有什么区别吗?声明方法的目的是为了使它更具可读性,比如:
-(void)methodName:(NSString*)str yourInt:(int)i{…}
。在声明字符串、数组、字典之后。。可以像其他C语言一样处理。。例如,以下两个声明都是正确的:
//old style
array = [nsarray arraywithobjects:a, b, c, nil];
dict = [nsdictionary dictionarywithobjects:@[o1, o2, o3]
forkeys:@[k1, k2, k3]];
number = [nsnumber numberwithchar:'x'];
number = [nsnumber numberwithint:12345];
//new style
array = @[ a, b, c ];
dict = @{ k1 : o1, k2 : o2, k3 : o3 };
number = @'x';
number = @12345;
来自土耳其论坛的资源是如上所述,这些参数是可选的:
也可以使用参数数量可变的方法,
虽然它们有点稀有。额外参数用逗号分隔
在方法名称的末尾之后。(与冒号不同,逗号不是
在下面的示例中,虚拟的
makeGroup:方法被传递一个必需的参数(组)和三个
可选参数:
[接收方makeGroup:组、成员一、成员二、成员三]代码>
因此,是的,声明与通常的声明不同。除了varargs方法之外,我找不到这种类型声明的任何常规用法,其中可选参数声明为…