objective-c – 使用[NSString stringWithString:@“some string”]与@“some string”的优点和缺点

我想比较以下简单的作业:

...
@property(nonatomic,retain) UITextField *textField;
...

self.textField.text = @"some string";
self.textField.text = [NSString stringWithString:@"some string"];
self.textField.text = [NSString stringWithFormat:@"some string"];

其中textField是UITextField,text属性是NSString.当然所有这些都有效.我知道使用参数时最后两个的区别.但是让我们说我们只对这种用法感兴趣.

问题:

>为了做这种任务,我为什么不总是使用第一个?
>比较后两个,这两个的编译和/或运行时有什么不同吗?为什么我应该使用stringWithString:如果不是这样的话?

For doing this kind of assignment, why shouldn’t I always use the first one?

在描述的情况下,您应该始终使用第一个.第二种和第三种情况可能会复制常量字符串,但UITextField的text属性被指定为复制提供的字符串.制作常量字符串的副本是没有意义的,因为UITextField的-setText:可以复制该副本.

Comparing the last two, is there any difference for the compile-
and/or runtime of these two? And why should I use stringWithString: at
all if not?

我的理解是-stringWithFormat:将始终创建一个新字符串,而-stringWithString:可能不会(可能不会)为常量字符串. hypercrypt上面的结果在这方面非常有说服力;如果你想探索更多,你可以尝试使用可变字符串进行相同的测试.

https://stackoverflow.com/questions/8275131/pros-and-cons-of-using-nsstring-stringwithstringsome-string-versus-some

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:objective-c – 使用[NSString stringWithString:@“some string”]与@“some string”的优点和缺点