假设我有这样的方法
+ (NSString *)stringWithObject:(id)object format:(NSString *)format
{
NSString *string = [NSString stringWithFormat:format, object];
NSLog(@"%@", string);
return string;
}
object
参数永远不会是 nil
但传入方法的格式参数可能是
NSString *formatWithPlaceholder = @"object: %@"
或
NSString *formatWithoutPlaceholder = @"No object";
所以如果将 formatWithoutPlaceholder
作为格式参数传递到方法中,控制台输出是正确的并且没有警告或错误,但这会导致其他问题吗?我觉得像这样使用 stringWithFormat:
有问题。
最佳答案
当格式字符串的格式说明符少于提供的参数数量时,不会发生任何坏事:您的代码对两种格式字符串都有效。
但是,当发生相反的情况时(格式说明符多于参数),您会得到未定义的行为。
关于objective-c - 当 stringWithFormat 格式没有类型占位符但有参数时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585272/