stu*_*ped 0 memory memory-management allocation initialization objective-c
可能重复:
NSString分配和初始化
我想知道为什么有些对象不需要初始化并分配内存.我读到这个:为什么在使用objective-c之前不需要初始化某些对象?他们说该方法已date初始化并为其分配了内存today.但是,如果我刚刚写了NSString *str = @"Hello";它仍然初始化和分配?
当编译器看到时@"Hello",它会在.o文件中添加一个符号,表示"嘿,dev想要一个包含内容的字符串"Hello".当链接器将所有内容链接在一起时,它就是唯一的 - ifies所有字符串并发出包含所有字符串的字符串表代码中定义的代码.
因此,实际上,编译器在编译和链接时"分配和初始化"字符串实例.
它们实际上以特殊格式存储,NSString类集群的特定子类可以封装.当您的应用程序运行时,此子类的实例已经存在,并且只是映射到内存中.
所以,不,没有分配和初始化.但是,是的,仍然是每个意义上的对象.唯一需要注意的是,他们忽略了保留/释放/自动释放,因此,当你这样做时NSString* foo = @"foo";,技术上也应该这样做retain.但是,按照惯例,没有人会烦恼,这很好.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |