我想要一种方法,可以像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/

10-12 13:47