我有一个问题[NSString strigWithFormat:format]
因为它返回一个 id,并且我有很多代码将 NSString var 更改为其他个人类型。但编译器不会阻止我在某些地方将 NSString 设置为另一种类型的对象。
所以我正在编写一个 NSString 类别,并将所有调用替换为stringWithFormat
to myStringWithFormat
.
代码是:
@interface NSString (NSStringPerso)
+ (NSString*) myStringWithFormat:(NSString *)format;
@end
@implementation NSString (NSStringPerso)
+ (NSString*) myStringWithFormat:(NSString *)format {
return (NSString*)[NSString stringWithFormat:format];
}
@end
编译器告诉我“格式不是字符串文字,也没有格式参数”。
你有什么办法可以让这项工作发挥作用吗?
NSString
包括一个从可变参数函数中获取参数列表的方法。看一下这个示例函数:
void print (NSString *format, ...) {
va_list arguments;
va_start(arguments, format);
NSString *outout = [[NSString alloc] initWithFormat:format arguments:arguments];
fputs([output UTF8String], stdout);
[output release];
va_end(arguments);
}
其中一些代码是不相关的,但关键行是NSString *output = [[NSString alloc] initWithformat:format arguments:arguments];
。这就是你可以构建一个NSString
在可变参数函数/方法中。
对于您的情况,您的代码应如下所示:
+ (NSString *)myStringWithFormat:(NSString *)format, ... {
va_list arguments;
va_start(arguments, format);
NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:arguments];
va_end(arguments);
// perform some modifications to formattedString
return [formattedString autorelease];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)