您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页Objective-C 中的可变参数

Objective-C 中的可变参数

来源:二三四教育网

Q:我怎样才能写一个像NSString's +stringWithFormat:这样能够携带不定长参数的方法呢?
像这样携带不定长参数的方法称为可变参数函数.

这是一个Objective-C category 的例子,包含一个可变参数函数,将所有的对象放在一个以nil结尾的参数列表的NSMutableArray的实例.

Listing 1: 一个典型的可变参数函数

#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

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务