【发布时间】:2014-10-29 13:01:38
【问题描述】:
来自 C++ 背景,我很惊讶我必须编写以下代码以避免警告:
NSMutableString *foobar = [@"foobar" mutableCopy]; // line 1
foobar = [[foobar capitalizedString] mutableCopy]; // line 2
第 1 行对我来说似乎很正常:你不能直接将 const 字符串转换为字符串。
第 2 行让我感到困惑:capitalizedString 是一个属于 NSString 并返回一个 NSString 的方法。因此,为了将其影响为 NSMutableString,您必须通过 mutableCopy “重铸”它。
但是为什么 NSMutableString 中的大写字符串没有像 "-(NSMutableString*) capitalizedString" 那样重载呢?
如果是这样,我们可以简单地编写以下内容而没有警告:
foobar = [foobar capitalizedString]; // line 2
PS:我知道我可以将两行写在一个单行中,但这是示例。
【问题讨论】:
-
这是因为你一开始就有一个 NSMutableString 是愚蠢的。 NSString* foobar = [@"foobar" capitalizedString] 工作得很好。
标签: objective-c nsstring