【问题标题】:Should we release a delegate in the dealloc method?我们应该在 dealloc 方法中释放一个委托吗?
【发布时间】:2012-03-23 12:44:46
【问题描述】:

你好,我有一个关于 Objective-C 内存管理的小问题。

我知道如果一个属性被保留,我们应该在 dealloc 方法中释放它。例如:

@property (nonatomic, retain) NSString *title;

在dealloc方法中:

-(void) dealloc
{ 
    [title release];
    [super dealloc];
}

但是如果我们声明一个委托(使用assign)

@property (nonatomic, assign) id titleDelegate

我们应该在dealloc方法中释放它吗?

[titleDelegate release]

提前感谢您的任何提示。

【问题讨论】:

  • 这里的解决方案是使用ARC和弱引用。
  • +1 用于指向 ARC。我总是用它。但就我而言,我已经编写了一个项目,并且正在修复其中的一些内存问题。谢谢

标签: objective-c memory-management delegates dealloc


【解决方案1】:

没有。您还没有分配内存或保留。所以不要释放它。使其为零。只有当您是对象的所有者时,您才会释放对象的内存。

【讨论】:

    【解决方案2】:

    你只需要释放你保留的东西。分配不会增加retainCount。所以,答案是否定的。

    【讨论】:

      【解决方案3】:

      没有。你不必也不能释放它。您不拥有该对象

      【讨论】:

        【解决方案4】:

        永远不要释放委托,只需将其设为 nil

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-13
          相关资源
          最近更新 更多