Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何将以零结尾的字符串列表传递给Objective-C函数?_Iphone_Objective C - Fatal编程技术网

Iphone 如何将以零结尾的字符串列表传递给Objective-C函数?

Iphone 如何将以零结尾的字符串列表传递给Objective-C函数?,iphone,objective-c,Iphone,Objective C,函数[NSArray arrayWithObjects:foo,bar,nil]将以nil结尾的字符串列表传递给函数 如果我想编写一个类似的函数,那么声明是什么样的,如何遍历字符串?我引用了它,它包含了全部事实 这是一个Objective-C类别的示例,包含一个附加 NSMutableArray实例的以零结尾的参数列表中的所有对象: #导入 @接口NSMutableArray(variadicMethodExample) -(void)appendObjects:(id)firstObject,

函数[NSArray arrayWithObjects:foo,bar,nil]将以nil结尾的字符串列表传递给函数

如果我想编写一个类似的函数,那么声明是什么样的,如何遍历字符串?

我引用了它,它包含了全部事实

这是一个Objective-C类别的示例,包含一个附加 NSMutableArray实例的以零结尾的参数列表中的所有对象:

#导入
@接口NSMutableArray(variadicMethodExample)
-(void)appendObjects:(id)firstObject,…;//此方法接受以零结尾的对象列表。
@结束
@NSMutableArray的实现(variadicMethodExample)
-(void)appendObjects:(id)firstObject。。。
{
每个项目的id;
va_列表参数列表;
if(firstObject)//第一个参数不是varargs列表的一部分,
{//所以我们将分别处理。
[自添加对象:第一个对象];
va_start(argumentList,firstObject);//开始扫描firstObject之后的参数。
while(eachObject=va_arg(argumentList,id))//尽可能多地获取类型为“id”的参数
[self addObject:eachObject];//这不是零,请将其添加到self的内容中。
va_end(论点列表);
}
}
@结束

我不确定Obj-c是否有自己的特殊支持,但在c中,您可以:

function nArgs(int n, ...)
要支持多个参数和以下实现样式:

 {
        va_list ap;
        va_start(ap, n);

        while (n-- > 0) {
            int i = va_arg(ap, int);
        }

        va_end(ap); 
    }

这里有更多信息:

NSArray声明的方法如下:

+ (id)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
实现它时,需要使用va_arg宏来获取每个参数

查找
va_列表
va_开始()
va_arg()
,等等


更多信息可以在
va_arg
的手册页中看到,通过查看stdarg.h

你知道如何使用多个参数列表来实现这一点吗?你不能;C ABI只允许一个varargs参数。
[NSArray arrayWithObjects:foo,bar,nil]
是一种方法,而不是函数。您是在尝试构建一个函数来实现此方法的功能,还是在尝试复制此方法?请再次阅读问题。还有,别这么胡闹。。。你会活得更长
+ (id)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;