Objective c 目标C.奇怪的语法

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]; 它会很好的工作 我的问题

我发现了一种在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 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方法之外,我找不到这种类型声明的任何常规用法,其中可选参数声明为