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中的规则之一.

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...