objective-c - 了解 cocoa 内存

标签 objective-c memory-management

这样做的好处是什么:

NSArray *array = [[NSArray alloc] initWithObjects:@"Year", "@Capital", ..., nil];
self.hintArray = array;
[array release];

而不是像这样直接分配给我的类变量:

self.hintArray = [[NSArray alloc] initWithObjects:@"Year", "@Capital", ..., nil];

为什么我们要创建一个临时本地对象然后释放它而不是仅仅分配给我们的类变量?

最佳答案

其他人已经指出了内存问题,但这是一步完成的最佳方法:

self.hintArray = [NSArray arrayWithObjects:@"Year", "@Capital", ..., nil];

方便的类方法+arrayWithObjects 返回一个已经被自动释放的数组,所以你根本不需要再担心它了。您的属性(property)访问者将负责复制或保留它。 (当然,假设您的 hintArray 属性设置为 retaincopy 属性)。

关于objective-c - 了解 cocoa 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368914/

相关文章:

iphone - 将图像保存到自定义库

ios - b2Body 太多?

C++ 使用继承为对象分配空间

c++ - 指向函数的指针怎么能指向内存中还不存在的东西呢?为什么原型(prototype)有不同的地址?

objective-c - 有没有不需要同时输入全部的MD5库?

iphone - 如何从我的应用程序将图像发送到 WhatsApp?

ios - 核心数据和 NSSortDescriptor 不根据基于 NSString 的第三个描述符排序

python - 如何跟踪 python 脚本的内存

delphi - 在 Delphi 中使用单个函数释放内存和 nil

iphone - 对于 Iphone,如何从当前加载的 View 引用 Root View Controller ,以便可以替换/切换 View