首先,最简单的案例:
当实例需要一个对象时,我会创建一个retain属性。这是我现在想到的唯一一个很好的例子。
除了在保留属性的setter中,还有其他我想要保留对象的情况吗?
答案 0 :(得分:2)
另一个例子是,如果您需要在从集合中删除对象后使用它。集合保留其对象,因此在删除对象时必须向对象发送-release
消息。因此,如果从集合中删除对象并尝试使用它,则无法保证它尚未被释放。
在这种情况下,您需要将-retain
发送到对象,同时它仍然在集合中,以保证在删除它之后它仍然有效。
答案 1 :(得分:2)
使用和init或copy方法创建对象时,对象会以保留计数1为您,因此您不需要保留这些对象,但您需要释放它们。
如果要将其存储到NSArray或NSDictionary之类的集合中,该集合将保留它,并在删除对象时将其释放。但是,您仍然拥有该对象,因此您还需要释放它。存储后发布它是合理的。
除此之外,您可能正在获得一个自动释放的对象,如果您希望它将持续超出当前的运行循环迭代,您可能希望保留它。
答案 2 :(得分:1)
要成为通用的,如果您在其他地方需要它,则会保留一个对象。