3

假设我有这样的方法

+ (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:问题。

4

1 回答 1

5

当格式字符串的格式说明符少于提供的参数数量时,没有什么不好的事情发生:您的代码对两种格式字符串都有效。

但是,当相反的情况发生时(格式说明符多于参数),您会得到未定义的行为。

于 2014-03-22T23:59:02.680 回答