所以,我很确定如果我打算经常操作字符串,比如使用stringByAppendingString,我应该使用NSMutableString类型的变量.
但是,如果我做这样的事情怎么办?
UILabel *someLabel = [[UILabel alloc] init];
[someLabel setText: [[someDictionary objectForKey:@"some_key"] stringByAppendingString:@"some other string"];
Run Code Online (Sandbox Code Playgroud)
我读到如果你stringByAppendingString在NSString上使用,你最终会出现泄漏,因为与初始NSString关联的指针移动,指向append创建的新字符串,而使用NSMutableString,指针始终指向可变字符串.
所以我的问题是,当我调用stringByAppendingString一个字符串,但没有显式的NSString 或 NSMutableString 时,隐含发生了什么?比如,在我上面的例子中,字典中某些键的值.这样做是错的,我应该做下面的事情吗?
[[[NSMutableString stringWithString:[someDictionary objectForKey:@"some_key"]] stringByAppendingString:@"some other string"]]
Run Code Online (Sandbox Code Playgroud)