gpt4 book ai didi

ios - 当格式说明符错误地传递给方法时如何发出警告

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:59:35 25 4
gpt4 key购买 nike

假设我有一个返回 BOOL 的方法,例如:

+(BOOL) isNewCar {
//returns YES or NO
}

然后我在 NSLog 中使用这个方法:

NSLog("Is my car new, the answer is %@", [MyUtil isNewCar]);

然后我收到编译器警告:

enter image description here

如果我忽略警告并运行,应用崩溃。现在我有另一个方法叫做 printCar,它接受可变参数,就像 NSLog 一样,它的实现是:

 -(void) printCar:(NSString *)msg, ... {
NSString * contents;
va_list args;
va_start(args, msg);
contents = [[NSString alloc] initWithFormat:msg arguments:args];
va_end(args);
[self writeToFile:contents];
}

当我将上述方法用作:

[self printCar:@"The car is mine or not : %@", [MyUtil isNewCar]];

编译器不会生成警告。此外,应用程序会崩溃。

问题:如果像 NSLog 那样向我们的自定义方法提供了错误的格式说明符,是否有办法生成警告?

提前致谢!

最佳答案

是的,您需要 NS_FORMAT_FUNCTION 宏来执行此操作,如果您按 Command 然后单击 NSLog 方法,您也可以看到它

void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2)

所以你的方法

-(void) printCar:(NSString *)msg, ... 

成为

-(void) printCar:(NSString *)msg, ... NS_FORMAT_FUNCTION(1,2)

您也可以通过命令单击 NS_FORMAT_FUNCTION 来查看更多详细信息

关于ios - 当格式说明符错误地传递给方法时如何发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099891/

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