NS_FORMAT_FUNCTION(F,A)

从本子上拷贝一开源项目到台式上,陡然间多了8个warning:Format string is not a string literal。

陡然间就觉得很呵呵有木有!

NSString *message = @"Attempting to connect while connected or accepting connections. Disconnect first.";
[NSException raise:AsyncSocketException format:message]; //警告出现处

跟踪查询了一下,里面有个方法是:

+ (void)raise:(NSString *)name format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3);

format确实是string啊,那么NS_FORMAT_FUNCTION(2,3)又是什么呢?

NS_FORMAT_FUNCTION(2,3) 是系统库的一个宏定义,用于自定义可变参数函数,官方解释是:

// Marks APIs which format strings by taking a format string and optional varargs as arguments

将警告处改为下面这样就好了:

[NSExceptionraise:AsyncSocketExceptionformat:message,nil];

嗯,好像说够了,撒哟!


版权声明:本文为a1484原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。