自毁模式

时间:2014-04-03 19:26:37

标签: objective-c design-patterns

我需要一个对象来为每个系统做一些工作,直到它完成,然后我希望释放该对象。这是一个好的设计模式吗?

@property(nonatomic, retain) A a;

// This call is done once in a while, and when a is no longer needed it will self destruct.
self.a = [self.a doSomething];

,其中

-(A*)doSomething
{
  bool rdy = [self doTheWorkAndReturnTrueIfRdy];
  return rdy ? nil : self; 
}

1 个答案:

答案 0 :(得分:0)

此方法:

-(void)doSomething
{
  bool rdy = [self doTheWorkAndReturnTrueIfRdy];
  return rdy ? nil : self; 
}

被定义为没有回报 - 但你试图返回某些东西。它似乎也是你希望它被多次调用/阻止调用者,这可能不会起作用或者不是一个好主意。

考虑按照您的计划保留工作人员,但添加与源对象的委托关系。完成工作程序后,调用委托方法。当源对象收到委托回调时,它可以释放该worker。