【发布时间】:2015-10-21 23:12:58
【问题描述】:
我想知道为什么我的代码不能像我想的那样工作。请考虑以下代码:
- (NSString *)bake {
return [NSString stringWithFormat:(@"Take %@, put it in oven for 30 minutes, add 250 gramm of %@ cheese, many %@ toppings and little drop of %@ sauce", [self dough], [self cheese], [self toppings], [self sauce])];
}
- (NSString *)cut {
return [NSString stringWithFormat:(@"Cut in 4 pieces")];
}
- (NSString *)box {
return [NSString stringWithFormat:(@"Box pizza. Ready for sale!")];
}
- (NSString *)orderString {
return [NSString stringWithFormat:@"%@ %@ %@", [self bake], [self cut], [self box]];
}
非常简单。现在,控制台中的输出结果是(即orderString 包含的内容):
Tobasko Cut in 4 pieces Box pizza. Ready for sale!
看起来由于某种原因,我们只从 bake NSString 中包含的文本中得到了最后一个字。编译器甚至用 2 个“黄色”警告警告这行代码:
格式字符串不是字符串文字(可能不安全)
表达式结果未使用
我只是通过删除这样的圆括号来解决这个问题:
return [NSString stringWithFormat:@"Take %@, put it in oven for 30 minutes, add 250 gramm of %@ cheese, many %@ toppings and little drop of %@ sauce", [self dough], [self cheese], [self toppings], [self sauce]];
但是,我不明白,当我简单地将语句放在圆括号中时,为什么编译器会截断我的字符串?
【问题讨论】:
-
它们被称为括号。
标签: objective-c nsstring