objective-c - 当 stringWithFormat 格式没有类型占位符但有参数时会发生什么

标签 objective-c nsstring stringwithformat

假设我有这样的方法

+ (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/

相关文章:

objective-c - 在 iOS 8 应用程序中隐藏状态栏

ios - 自其他 View 以来,如何更新 UITableViewController?

ios - 使用零填充 float 的 stringWitFormat

iphone - StringWithFormat 返回非 NSString

ios - 获取花名册而不是组列表 XMPP iOS Swift

ios - 如何为 UICollectionView 实现放大/缩小动画

ios - 获取 UIWebview 的当前域

objective-c - NSString到NSDate返回错误的日期

IOS 字符串问题。一个工作,一个不工作,是什么给了?

objective-c - 如何自定义类似 'stringWithFormat' 的方法?