我可以在系统内使用NSString(“”);?

时间:2012-08-26 08:42:49

标签: iphone objective-c ios c tweak

我正在进行调整,用户通过首选项包写入命令的参数(例如来自sbutils的sbalert)。我能够将它保存到NSString但不能将其用作sbalert命令的参数。这可能吗?有替代方案吗?我的代码是

int main(int argc, char **argv, char **envp) {

NSString *string1 = @"Hello World";
NSLog(@"%@", string1);
system(" sbalert -t %@", string1);

    return 0;
}

// vim:ft=objc

请注意,这是一个测试,因此NSString不等于Preference Bundle中的文本,但仍然会在编译时给出错误。

1 个答案:

答案 0 :(得分:8)

没有。 system函数不接受格式字符串,即使这样做,也不能使用%@格式说明符 - 仅适用于Cocoa,而不能在C标准库中使用。你必须预先格式化你的字符串,如:

NSString *cmd = [NSString stringWithFormat:@"sbalert -t '%@'", string1];
system([cmd UTF8String]);