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