所以,我相当肯定,如果我打算经常操作字符串,比如 with stringByAppendingString
,我应该使用 NSMutableString 类型的变量。
但是,如果我正在做这样的事情呢?
UILabel *someLabel = [[UILabel alloc] init];
[someLabel setText: [[someDictionary objectForKey:@"some_key"] stringByAppendingString:@"some other string"];
我读到如果你stringByAppendingString
在 NSString 上使用,你最终会出现泄漏,因为与初始 NSString 关联的指针会四处移动,指向由追加创建的新字符串,而使用 NSMutableString,你的指针总是指向那个可变字符串。
所以我的问题是,当我调用stringByAppendingString
一个字符串而不是明确的 NSString或NSMutableString 时,隐含地发生了什么?例如,在我上面的例子中,字典中某个键的值。这样做是错误的,我应该做如下的事情吗?
[[[NSMutableString stringWithString:[someDictionary objectForKey:@"some_key"]] stringByAppendingString:@"some other string"]]