【问题标题】:Memory management when returning an Objective-C object返回 Objective-C 对象时的内存管理
【发布时间】:2010-07-08 02:54:43
【问题描述】:

在 Objective-C 中,如果我有一个分配和初始化对象的方法,然后返回它,我在哪里/如何释放它?

例如,假设我有一个创建对象的方法:

- (void)aMethod {
    UIView *aView = [self createObject];
}

- (UIView *)createObject {
    UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero];
    return returnView;
}

我什么时候释放这个对象?还是我只是自动释放它?

【问题讨论】:

标签: objective-c memory-management


【解决方案1】:

rules for memory management 对此事很清楚。你应该阅读它们。非常简单,并且是使用 Apple 框架编写 Objective-C 代码的基础。

【讨论】:

    【解决方案2】:
    - (void)aMethod {
        UIView *aView = [self createObject];
    }
    
    - (UIView *)createObject {
        UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero];
        [returnView autorelease];
        return returnView;
    }
    

    【讨论】:

      【解决方案3】:

      还请记住,垃圾收集不存在于 iPhone 上,因此如果您正在为该环境进行开发,则无法自动释放。

      关于什么时候应该释放对象,简单的回答是在你用完它之后,在你销毁你的应用程序之前。

      【讨论】:

      • 那么就我上面的例子而言,我会在aMethod 方法中处理完对象后释放它吗?
      • @jer 我几乎可以肯定垃圾收集不在任何 iOS 中
      • @jer from that link: "Platform: Mac OS X" 很多 mac 的东西溜进了 iPhone 文档
      • iOS 上没有垃圾回收。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多