Objective-C 中的可变长度参数
在 Objective-C 中,如何创建具有可变长度参数的类方法?
例如,类似 -arrayWithObjects 的方法:
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
How can i make a class method with variable length parameters, in Objective-C?
For example, a method like -arrayWithObjects:
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看一下 varargs,例如:
Apple 技术问答 QA1405。该方法是否是类方法并不重要。
Take a look at varargs, e.g.:
Apple Technical Q&A QA1405. It shouldn't matter whether the method is a class method or not.
您需要的是一个可变参数函数。这些函数采用灵活数量的参数,例如
NSLog
、[NSArray arrayWithObjects:...]
等。请参阅本教程:
http://www.numbergrinder.com/node/35
从我的答案中复制:Obj-C,试图编写 NSLog 的替代方案,但我希望我的函数像 NSLog 一样连接?
What you need is a variadic function. These functions take a flexible number of arguments, like
NSLog
,[NSArray arrayWithObjects:...]
, etc.See this tutorial:
http://www.numbergrinder.com/node/35
Copied from my answer here: Obj-C, trying to write an alternative to NSLog, but I want my function to concatenate like NSLog?
采用可变参数的方法称为可变参数方法。 “...”是变量参数。
例如,您的函数声明为:
- (void)specialWithX:(NSInteger)xy:(NSInteger)y, ...;
有关其他信息,请查看 Cocoa 中的变量参数列表
Methods that take variable arguments are known as variadic methods. The "..." is the variable argument.
For example, your function declaration would be:
- (void)specialWithX:(NSInteger)x y:(NSInteger)y, ...;
For additional information take a look at Variable argument lists in Cocoa