假设我有一个这样的方法
+ (NSString *)stringWithObject:(id)object format:(NSString *)format
{
NSString *string = [NSString stringWithFormat:format, object];
NSLog(@"%@", string);
return string;
}
该object
参数是从来没有nil
,但传递到方法的format参数可能要么是
NSString *formatWithPlaceholder = @"object: %@"
或者
NSString *formatWithoutPlaceholder = @"No object";
因此,如果formatWithoutPlaceholder
将其作为格式参数传递给该方法,则控制台输出是正确的,并且没有警告或错误,但这会引起其他问题吗?我觉得这样的用法有stringWithFormat:
问题。
当格式字符串的格式说明符少于提供的参数数量时,没什么不好的事情:您的代码对两个格式字符串均有效。
但是,当相反的情况发生时(格式说明符多于参数),您将得到未定义的行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句