微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

objective-c – 何时不分配和初始化NSString

每当我需要创建一个新的Nsstring变量时,我总是分配并初始化它.似乎有时候你不想这样做.你怎么知道什么时候分配和初始化Nsstring,什么时候不知道?

解决方法

Whenever I need to create a new Nsstring variable I always alloc and init it.

不,这没有意义.

该变量从程序遇到您声明它的那一刻起就存在:

Nsstring *myString;

此变量不是Nsstring.它是存储指向Nsstring的指针.这就是*表示的内容:该变量包含指针.

Nsstring对象仅在您创建一个对象时存在:

[[Nsstring alloc] init];

并且指向该对象的指针仅在您在其中分配时的变量中:

myString = [[Nsstring alloc] init];
//Or,initializing the variable in its declaration:
Nsstring *myString = [[Nsstring alloc] init];

因此,如果你要从其他地方获取一个字符串对象(例如substringWithRange :),你可以跳过创建一个新的空字符串,因为你只是要用指针替换指向空字符串的指针.另一个.

有时您确实想要创建一个空字符串;例如,如果您要一次一个获取一串字符串(例如,来自NSScanner)并且想要将它们中的一些或全部连接成一个大字符串,则可以创建一个空的可变字符串(使用alloc和init)并发送appendString:消息来进行连接.

您还需要释放您通过alloc创建的任何对象.这是Memory Management Programming Guide中的规则之一.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐