对象分配及其释放

Posted

技术标签:

【中文标题】对象分配及其释放【英文标题】:Object allocations and their release 【发布时间】:2012-02-13 07:35:09 【问题描述】:

我对对象分配及其在目标中的释放的理解是..this.. 如果假设我用 alloc init 分配了一个对象,那么我需要在它最后一次引用之后释放它。 像这样……

 MyViewController *myView=[MyViewController alloc ]init];
 [self.view presentModalViewController myView animated:YES];
  [myView release];

但是,如果假设我需要 NSMutableArray 。 我将其设置为

  @property(nonatomic, retain)NSMutableArray *myArr; 

并且需要这个数组通过我的 viewcontroller 手段例如说...... view 有 uitableview 并且它的数据源是这个数组 (myArr)。

并且应用程序通过 Sqlite3 拥有其本地数据存储副本。

所以我使用 sqlite 3 的 select statemnt 将对象添加到这个数组中。

因为我每次 viewappears 时都需要这些数据,所以我在 viewDidAppear 中分配了这个 myArr 作为...

myArr=[NSMutableArray alloc]init];

我需要在 cellForRowAtIndexPath () 方法中为 uitableview 的每个单元格添加值。

表示它的las引用在cellForRowAtIndexPath()中

所以我的问题是我应该在哪里释放这个分配的 myArr 对象

thnx in advnce

亲切的问候 囧囧

【问题讨论】:

【参考方案1】:

我认为合适的地方是

- (void)viewDidUnload

    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;

【讨论】:

然而,这个方法只有在我没有错的时候才调用一次,我每次视图出现时都会分配 如果您只是隐藏和显示一个视图,您可以尝试在viewDidDisappear: 中执行此操作,只要确保在视图不可见时不要尝试访问它

以上是关于对象分配及其释放的主要内容,如果未能解决你的问题,请参考以下文章

我应该在重新分配之前调用分配给保留属性的自动释放对象的释放吗?

释放对象后分配'nil'的需要是啥

目标 C:保留/释放内联分配的对象

Java 内存分析显示异常的对象分配和释放

类对象的动态分配以及释放

Objective-C 对象的分配/释放