Tri*_*cky 7 iphone cocoa cocoa-touch cocoa-design-patterns
我有一个简单的查询,我想要被某人清理......保留自己是不是很糟糕?
我有一个服务器请求对象,我想做.我希望能够以下列方式使用它:
ARequest *request = [ARequest request: someParam];
request.delegate = self;
[request begin];
Run Code Online (Sandbox Code Playgroud)
为了让对象在自动释放池耗尽后不会自毁,我想我需要在它的init方法中调用retain,然后在收到,处理并传递给它的委托时响应服务器响应.
然而,有些事情正在用这种方法引起我的警钟.更好的方法吗?
保留没有任何问题self,只要您根据正常的内存管理协议在某个明确定义的位置释放它.如果一个对象要求自己存在直到某个条件满足,那么它应该对此负责,就像它对继续存在所需的任何其他对象一样.
引入其他无关的管理器对象或者出于迷信的原因强加对象所有者的责任将是真正的反模式.
(垃圾收集代码中的等效方法是,对象在结果挂起时将自己从垃圾收集中排除,或者如果您不喜欢该想法,则将其置于某种集合中.)