OGeek|极客世界-中国程序员成长平台

标题: objective-c - iOS:属性——分配和释放对象 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 07:57
标题: objective-c - iOS:属性——分配和释放对象

我在 iOS (4) 中苦苦挣扎,在一个范围内分配对象并在另一个范围内释放它。我使用属性作为指向对象的指针。对象在一个实例类方法中分配和初始化,我在类的 dealloc 方法中释放它。这些属性是用retain声明的。除了在使用此类属性时遇到问题外,我还发现分配和初始化对象以及设置属性很麻烦。

NSObject *object = [[NSObject alloc] init];
Self.myProperty = object;
[object release];

我试过了

self.myObject = [[NSObject alloc] init];

但是这给了我一个内存泄漏。

我的问题:我必须制作这个临时对象还是有更优雅的方法?

一个后续问题:我是否必须同时将属性设置为 nil 并释放自动生成的 ivar?

[self setMyProperty:nil], [myProperty release];

当 XCode 4 为您生成属性 stub 时,它会将 [self setMyProperty:nil] 放入 viewDidUnload 并将 [_myProperty release] 放入 dealloc。



Best Answer-推荐答案


第一个问题:

autorelease 是你的 friend :

self.myObject = [[[NSObject alloc] init] autorelease];

第二个问题:

不,它是多余的,但无害,因为第二个操作不会执行任何操作([nil release] 是安全的)。 我建议使用 self.XXX = nil; 构造,因为它更安全且非常清晰/可读。

关于objective-c - iOS:属性——分配和释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294245/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4