gpt4 book ai didi

objective-c - 定义一个有很多(或无限)参数的方法

转载 作者:太空狗 更新时间:2023-10-30 03:30:50 26 4
gpt4 key购买 nike

NSArrayinitWithObjects: 方法接受一个不确定的参数列表:

NSMutableArray *array = [[NSMutableArray alloc]initWithObjects:(id), ..., nil

如何定义自己的方法?

- (void)CustomMethod:????? <= want to take infinite arguments {

}

最佳答案

“无限参数”是可变参数,使用它们的方法称为可变参数方法。您定义它们的方式与您的 NSMutableArray 示例相同。苹果的Technical Q&A有一个如何实现它的例子。

- (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);
}
}

nil 参数的原因是让您知道何时到达列表末尾。 NSLogprintf 等函数不需要最后一个参数为 nil 因为它可以计算格式字符串中说明符的数量(%d, %s 等等...)

关于objective-c - 定义一个有很多(或无限)参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com