使用格式的NSString定义方法

Dan*_*552 4 objective-c ios

如何在自己的类中定义一个接受带格式的NSString的方法?

我看到使用它像一些不同的东西NSLog,[NSPredicate predicateWithFormat:(NSString *)predicateFormat, ...]当然[NSString stringWithFormat:(NSString *)format, ...]

此外,在头文件中,NSLog和stringWithFormat在声明后具有以下内容: NS_FORMAT_FUNCTION(1,2).谷歌搜索告诉我这意味着什么并没有多大帮助.

显然省略号是格式参数,但我不知道如何在方法本身中处理它们.

rma*_*ddy 7

您需要使用一些C代码:

- (void)someMethod:(NSString *)format,... {
    va_list argList;
    va_start(argList, format);
    while (format) {
        // do something with format which now has next argument value
        format = va_arg(argList, id);
    }
    va_end(argList);
}
Run Code Online (Sandbox Code Playgroud)

如果你只想将这些东西传递给字符串格式,那么这可行:

- (void)someMethod:(NSString *)format,... {
    va_list args;
    va_start(args, format);
    NSString *msg = [[NSString alloc] initWithFormat:format arguments:args];
    va_end(args);
}
Run Code Online (Sandbox Code Playgroud)