stringWithFormat应该返回一个字符串,为什么这个语句不编译?
NSAssert(YES, [NSString stringWithFormat:@"%@",@"test if compiles"]);什么时候
NSAssert(YES, @"test if compiles");编译?
发布于 2013-08-23 11:09:43
将其用作:
NSAssert(YES, ([NSString stringWithFormat:@"%@",@"test if compiles"])); // Pass it in brackets ()希望它能帮到你。
发布于 2014-03-19 18:18:19
您实际上根本不需要使用stringWithFormat。NSAssert已经希望您传递用于格式化的格式字符串和变量参数。考虑到您的例子,您会发现这个方法同样有效:
NSAssert(YES, "%@", @"test if compiles");或者,一个更现实的例子:
NSAssert(i > 0, @"i was negative: %d", i); 造成问题的原因是因为 is a macro定义如下:
#define NSAssert(condition, desc, ...)编译器之所以感到困惑,是因为stringWithFormat的参数列表与宏本身的参数列表之间存在歧义。正如Nishant所指出的,如果您真的想在这里使用stringWithFormat,可以添加括号以避免混淆。
https://stackoverflow.com/questions/18401226
复制相似问题