代码之家  ›  专栏  ›  技术社区  ›  Calvin

返回Objective-C对象时的内存管理

  •  3
  • Calvin  · 技术社区  · 14 年前

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

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

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

    我什么时候释放这个物体?或者我只是自动释放它?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Kurbz    14 年前
    - (void)aMethod {
        UIView *aView = [self createObject];
    }
    
    - (UIView *)createObject {
        UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero];
        [returnView autorelease];
        return returnView;
    }
    
        2
  •  8
  •   jer    14 年前

    这个 rules for memory management 对这件事很清楚。你应该读一下。非常简单,也是使用苹果框架编写Objective-C代码的基础。

        3
  •  -6
  •   Chris Shelley    14 年前

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

    至于什么时候应该释放对象,最简单的答案是当您使用完对象,在您销毁应用程序之前。