objective-c - 变量参数列表中的非 POD 类型

标签 objective-c c ios ipad

我正在使用 soap 库并将项目切换到 Apple LLVM 3.0 编译器,这给了我几百个错误,无论如何几乎都修复了它们。除了一个。

在'while (eachObject .....' 给我一个编译器错误 '错误:'va_arg' 的第二个参数是非 POD 类型 'id' [-Wnon-pod-varargs,3]'

我不知道传递的对象的类型。它适用于以前版本的编译器,但这个版本有点挑剔。

- (id)initWithObjects:(id)firstObj, ...{
if(self = [self init]) {

    id eachObject;

    va_list argumentList;
    if (firstObj) {
        [self.items addObject: firstObj];
        va_start(argumentList, firstObj);

        while (eachObject == va_arg(argumentList, id)) {
            [self.items addObject: eachObject];
        }
        va_end(argumentList);
    }
}
return self;

最佳答案

代替 id,尝试将参数作为 void * 并在单独的步骤中将其转换为 id。我不确定为什么 clang 对此大发雷霆,但这至少应该让它开心。

关于objective-c - 变量参数列表中的非 POD 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675565/

相关文章:

c++ - 是否可以从 Objective-C 获得中间 C 代码?

c# - iPhone 无法识别下载的 JPEG 文件

ios - CircleCI for iOS - 缓存 cocoapods 依赖

objective-c - Cocoa的try/catch/finally异常处理在什么情况下@finally是非冗余的?

ios - 如何在 Objective-C 中设置 Http header 字段?

iphone - iOS - 链接器错误,重复符号

c - 用 C 语言逐行读取文件

c++ - msdn使用winhttp C++上传图像

c - C 语言中可以并行执行输入/输出操作吗?

iOS wifi扫描,信号强度