gpt4 book ai didi

objective-c - 如何使用 va_args 传递参数(可变参数,省略号)

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

我无法理解 Objective-C 中多个参数的语法。我看过this question ,但答案对我没有帮助(还)。

这是我的代码(实际上我想最终传递给 NSString stringWithFormat,但现在让 NSLog 工作就足够了):

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
[self log:@"blah blah %d", 32];
}


- (void)log:(NSString *)text, ... {
va_list args;
va_start(args, text);
NSLog(text, args);
}

参数(或某些参数)通过了,但它有一些奇怪的值(输出是 blah blah 1606412704)。我应该如何传递通过 ... 传入的值?

最佳答案

NSLog 有一个变体,它接受一个名为 NSLogvva_list :

- (void) log:(NSString *)text, ... {
va_list args;
va_start(args, text);
NSLogv(text, args);
va_end(args);
}

转发实际 ...(不是 va_list)的唯一方法是使用宏。例如:

#define MyLog(f, ...) { \
NSLog(f, ##__VA_ARGS__); \
[someObject doSomething:f, ##__VA_ARGS__]; \
}

但是,这应该非常谨慎地使用,因为宏可以使代码真正混淆。

关于objective-c - 如何使用 va_args 传递参数(可变参数,省略号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143906/

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