从本子上拷贝一开源项目到台式上,陡然间多了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
将警告处改为下面这样就好了:
[NSException raise:AsyncSocketException format:message,nil];
嗯,好像说够了,撒哟!