菜鸟问题:
我目前的印象是,当你想创建一个对象时,你需要alloc
和init
那个对象。
但是,我已经看到了几个NSString
声明对象的示例代码,但是我没有看到以下消息alloc
或init
消息...
一个非常简单的例子:
NSString *myString = @"Hello World"; NSLog(@"%@" , myString);
有人可以解释为什么会这样吗?
菜鸟问题:
我目前的印象是,当你想创建一个对象时,你需要alloc
和init
那个对象。
但是,我已经看到了几个NSString
声明对象的示例代码,但是我没有看到以下消息alloc
或init
消息...
一个非常简单的例子:
NSString *myString = @"Hello World"; NSLog(@"%@" , myString);
有人可以解释为什么会这样吗?
声明变量不需要释放任何内存。
实例化对象确实如此。如果你调用alloc或copy ,你只会实例化一个新对象
在您的示例中,您正在设置对编译器从硬编码字符串创建的现有对象的引用。而且您不必管理它的内存,因为您没有实例化它。
不知道我解释的够不够清楚。
编辑:
看起来已经有一个问题可以回答这个问题:
当您在代码中嵌入NSString
文字时,例如@"hello, world'
,编译器会在您的可执行文件中为其分配空间,并在程序启动时将其加载到内存中并进行初始化。
由于它是您的可执行文件的一部分,因此它在您的应用程序的整个生命周期中都存在。没有必要保留或释放它。您为其创建的NSString *myString
变量是指向编译器放置NSString
文字的内存位置的指针。