目标C.奇怪的语法

Vit*_*i B 9 objective-c

对于我来说,在Objective C中声明一个方法,我发现了一个奇怪的方法.

.h文件中的方法声明:

-(void)methodName:(NSString *)str, int i;
Run Code Online (Sandbox Code Playgroud)

.m文件中的方法实现:

-(void)methodName:(NSString *)str, int i
{
     NSLog(@"str = %@, int = %d", str, i);
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样调用这个方法:

[self methodName:@"stringExample", 99];
Run Code Online (Sandbox Code Playgroud)

它会工作正常.

我的问题是我应该何时使用这种语法.它和通常的声明有什么区别吗?

tro*_*foe 6

如上所述这里,这些参数都是可选的:

采用可变数量参数的方法也是可能的,尽管它们有点罕见.在方法名称结束后,使用逗号分隔额外参数.(与冒号不同,逗号不被视为名称的一部分.)在下面的示例中,假想的makeGroup:方法传递一个必需参数(组)和三个可选参数:

[receiver makeGroup:group, memberOne, memberTwo, memberThree];

所以,是的,声明与通常的声明不同.除了使用varargs方法之外,我找不到任何常规使用此类声明,其中可选参数声明为....