我已经在我的类的头文件中声明了MutableArray rqst_entries作为属性并将其合成。 在viewDidLoad中添加以下代码:这是一个保留或autorelease对象吗?
self.rqst_entries = [NSMutableArray array];
将它打开这个伊娃被自动释放,也许更早释放它(的dealloc被调用之前)
THX帮助,
斯特凡
我已经在我的类的头文件中声明了MutableArray rqst_entries作为属性并将其合成。 在viewDidLoad中添加以下代码:这是一个保留或autorelease对象吗?
self.rqst_entries = [NSMutableArray array];
将它打开这个伊娃被自动释放,也许更早释放它(的dealloc被调用之前)
THX帮助,
斯特凡
如果您已将自己的房产定义为retain
或copy
,那么它将由ivar持有,您将会被罚款。如果你另一方面已经定义你的属性为assigned
,你将遇到问题,因为[NSMutableArray数组]是自动发布的。
如果您的财产是retain
或copy
,则不应该。
如果你的财产被保留,那么你很好。您已将自动释放对象分配给您的媒体资源,但此操作已为您保留。
[NSMutableArray array]返回一个自动释放对象。
大家的回答都是关于房产rqst_entries
。基本上,你需要一个内存模型为retain
的属性。有些情况下你会想要使用copy
,但这通常用于不可变类型(NSArray,NSString等)。 NSMutableArray是可变的(您可以添加条目,删除条目并修改数组中的条目)。
你要定义你的财产,如:
@property (nonatomic, retain) NSMutableArray *rqst_entries;
,真正旅行的人最多做一个分配/复制/保留就像一个属性赋值的部分:
self.rqst_entries = [[NSMutableArray alloc] init];
,因为这将泄漏,除非随后发布
[self.rqst_entries release];
在这种情况下分配的最佳方式是使用al ocal变量(至少如果你需要线程安全)。像:
NSMutableArray *myArray = [[NSMutableArray alloc] init;
self.rqst_entries = myArray;
[myArray release];
我意识到这是一个很平凡的例子,但它确实说明了一点。
请添加代码,以确定如何定义rqst_entries属性,因为每个人都在此属性的内存模型中进行猜测。 – Sam