【问题标题】:Is releasing a property正在释放一个属性
【发布时间】:2010-11-12 22:46:20
【问题描述】:

我有一个属性声明为:

@property(nonatomic,retain) DateClass *dateClass;

我有这段代码需要将一个新实例复制到其中:

//Do I need to release dateClass here first before assigning new instance?
self.dateClass = [self getOtherDateClass];

...
-(DateClass*) getOtherDateClass
{
  DateClass *dateClass = [[[DateClass alloc]init]autoRelease];

  return dateClass;         
}

在将self.dateClass 设置为自动释放的新实例之前,我是否需要释放它,或者合成的属性是否已经为我这样做了?

【问题讨论】:

    标签: iphone objective-c cocoa-touch memory-management


    【解决方案1】:

    没有。使用 retaincopy 声明的 @property 将为您释放旧对象,假设您正在使用该属性的合成设置器。

    【讨论】:

    • 好的,但是在分配之前自动释放新对象是否明智?自动释放是否有可能过早启动,使我的类对象无效?
    • 在当前的 runloop 迭代结束之前,自动释放不会启动,所以你不必担心它会“提前”启动,除非你自己用自动释放池做一些事情.
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2011-10-16
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多