我在Apple文档中读到我们可以在Objective c方法调用中使用可选参数.Apple文档中的示例:
采用可变数量参数的方法也是可能的,尽管它们有点罕见.在方法名称结束后,使用逗号分隔额外参数.(与冒号不同,逗号不被视为名称的一部分.)在下面的示例中,假想的makeGroup:方法传递一个必需参数(组)和三个可选参数:
[receiver makeGroup:group, memberOne, memberTwo, memberThree];
Run Code Online (Sandbox Code Playgroud)
有人能说出何时使用此功能以及如何使用?Apple API中有任何示例吗?
谢谢
rob*_*off 10
您描述的方法类型称为可变方法.Cocoa的例子包括+[NSArray arrayWithObjects:]和+[NSDictionary dictionaryWithObjectsAndKeys:].您可以使用中定义的宏访问可变方法(或函数)的参数stdarg.h.
以下是如何实现该+[NSArray arrayWithObjects:]方法的示例:
+ (NSArray *)arrayWithObjects:(id)firstObject, ... {
int count = 0;
va_list ap;
va_start(ap, firstObject);
id object = firstObject;
while (object) {
++count;
object = va_arg(ap, id);
}
va_end(ap);
id objects[count];
va_start(ap, firstObject);
object = firstObject;
for (int i = 0; i < count; ++i) {
objects[i] = object;
object = va_arg(ap, id);
}
va_end(ap);
return [self arrayWithObjects:objects count:count];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5241 次 |
| 最近记录: |