我想要一种方法,可以像NSArray一样放置尽可能多的参数:
- (id)initWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
然后,我可以使用:
NSArray *array = [[NSArray alloc] initWithObjects:obj1, obj2, ob3, nil];
我可以添加任意数量的对象,只要在结尾处添加“nil”即可告诉我我已经完成了。
我的问题是我如何知道给出了多少个论据,一次又要如何解决?
最佳答案
- (void)yourMethod:(id) firstObject, ...
{
id eachObject;
va_list argumentList;
if (firstObject)
{
// do something with firstObject. Remember, it is not part of the variable argument list
[self addObject: firstObject];
va_start(argumentList, firstObject); // scan for arguments after firstObject.
while (eachObject = va_arg(argumentList, id)) // get rest of the objects until nil is found
{
// do something with each object
}
va_end(argumentList);
}
}
关于objective-c - 具有输入数组的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4893891/