【问题标题】:Pass any number of parameters to a method? [duplicate]向方法传递任意数量的参数? [复制]
【发布时间】:2012-04-15 17:11:43
【问题描述】:

可能重复:
Define a method that has many (or infinite) arguments

我有以下方法,应该是获取n个参数。如何一一访问这些参数?如何计算传递给该方法的参数个数?

Objective-C 中的这个特性叫什么?

- (void)containsPoints:(CGPoint)points, ...
{
   // Get number of points passed?
   // Access these points 1 by 1
}

【问题讨论】:

    标签: objective-c syntax methods arguments


    【解决方案1】:

    来自here

    #import <Cocoa/Cocoa.h>
    
    @interface NSMutableArray (variadicMethodExample)
    
    - (void) appendObjects:(id) firstObject, ...; // This method takes a nil-terminated list of objects.
    
    @end
    
    @implementation NSMutableArray (variadicMethodExample)
    
    - (void) appendObjects:(id) firstObject, ...
    {
      id eachObject;
      va_list argumentList;
      if (firstObject) // The first argument isn't part of the varargs list,
      {                                   // so we'll handle it separately.
        [self addObject: firstObject];
        va_start(argumentList, firstObject); // Start scanning for arguments after firstObject.
        while (eachObject = va_arg(argumentList, id)) // As many times as we can get an argument of type "id"
          [self addObject: eachObject]; // that isn't nil, add it to self's contents.
        va_end(argumentList);
      }
    }
    
    @end
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2022-06-27
      相关资源
      最近更新 更多