我在 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。
第一个问题:
autorelease
是你的 friend :
self.myObject = [[[NSObject alloc] init] autorelease];
第二个问题:
不,它是多余的,但无害,因为第二个操作不会执行任何操作([nil release]
是安全的)。
我建议使用 self.XXX = nil;
构造,因为它更安全且非常清晰/可读。
关于objective-c - iOS:属性——分配和释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294245/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |