假设我有一个返回 BOOL
的方法,例如:
+(BOOL) isNewCar {
//returns YES or NO
}
然后我在 NSLog
中使用这个方法:
NSLog("Is my car new, the answer is %@", [MyUtil isNewCar]);
然后我得到编译器警告:
如果我忽略警告并运行,应用程序崩溃。
现在我有另一个名为 printCar
的方法,它接受变量参数,就像 NSLog
其实现是:
-(void) printCarNSString *)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) printCarNSString *)msg, ...
变成
-(void) printCarNSString *)msg, ... NS_FORMAT_FUNCTION(1,2)
你也可以Command Click NS_FORMAT_FUNCTION
查看更多细节
关于ios - 当格式说明符错误地传递给方法时如何发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099891/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) | Powered by Discuz! X3.4 |