2012-01-27 43 views
0

我正在阅读Apple的基本内存管理规则文档。我遇到了一句话:“任何物体都可能有一个或多个所有者。”2个所有者的对象

这是什么意思?拥有2个所有者的对象。 我并不十分熟悉OOP的概念。

回答

3

在内存管理中,如果一个对象拥有对另一个对象的引用,它将保留它。

多个对象可以保留一个对象,当对象上没有保留时,没有人拥有它并且它消失。保留增加引用计数,并且发布将其递减。

一个很好的比喻是给宠物添加皮带。多人可以添加皮带,但如果没有人有皮带,它可以消失:)

如果您要使用一个对象的引用,而不是直接函数,您将得到参考,然后你应该保留它。如果你调用alloc,复制mutableCopy来获取引用,那么你只保留它。如果你通过另一个消息名称得到它,那么标准是自动发布的(这很好),并且将在该函数的范围之外的某个将来的某个时刻离开。

+0

我喜欢“皮带”类比! – zaph 2012-01-27 12:43:56

2

“拥有”他们的意思是“有一个参考。”。 iOS内存管理是显式的,它是通过引用计数完成的。发送给对象的“保留”消息增加了引用计数,“释放”消息减少了引用计数。当引用计数达到0时,该对象被释放(并首先发送“dealloc”消息)。这适用于NSObject层次结构中的对象。

因此,当一个对象被交给一个对象的引用时,它将来会在某个时间继续使用,该对象会保留指向该对象的指针的副本并向其发送“保留”消息,以便当“所有者”想要访问它时,该对象将不会被释放。

相关问题