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