8

菜鸟问题:

我目前的印象是,当你想创建一个对象时,你需要allocinit那个对象。

但是,我已经看到了几个NSString声明对象的示例代码,但是我没有看到以下消息allocinit消息...

一个非常简单的例子:

NSString *myString = @"Hello World";

NSLog(@"%@" , myString);

有人可以解释为什么会这样吗?

4

2 回答 2

12

声明变量不需要释放任何内存。

实例化对象确实如此。如果你调用alloccopy ,你只会实例化一个新对象

在您的示例中,您正在设置对编译器从硬编码字符串创建的现有对象的引用。而且您不必管理它的内存,因为您没有实例化它。

不知道我解释的够不够清楚。

编辑:

看起来已经有一个问题可以回答这个问题:

文字 NSString 是自动释放还是需要释放?

于 2009-03-12T01:10:10.203 回答
6

当您在代码中嵌入NSString文字时,例如@"hello, world',编译器会在您的可执行文件中为其分配空间,并在程序启动时将其加载到内存中并进行初始化。

由于它是您的可执行文件的一部分,因此它在您的应用程序的整个生命周期中都存在。没有必要保留或释放它。您为其创建的NSString *myString变量是指向编译器放置NSString文字的内存位置的指针。

于 2009-03-12T01:54:52.407 回答