【问题标题】:What is IOS retain do at backend [closed]IOS保留在后端做什么[关闭]
【发布时间】:2012-10-20 15:54:11
【问题描述】:

假设我正在分配一个对象。请看下图

在上图中,*myObject 是一个指针。它指的是分配给该对象的空间。当我们保留对象时,我想知道它在后端做了什么。我也想知道我们为什么要这样做。

当我们发布它时它在后端的工作方式。

我也想知道当我们复制一个对象时后端会发生什么。

如果我的问题如此基本,我真的很抱歉。

【问题讨论】:

  • 你真的找不到这些信息的来源吗?它在网络上的许多地方免费提供。你说的后端是什么意思?阅读 obj C 有大量的资源,我确信这个问题已经在 SO 上被回答了一千次了。
  • 我搜了一下,有人说它给了所有权等...后端是指操作系统ios。
  • 如果已经回答了确切的问题,请提供链接,我将删除该问题。谢谢你..
  • 不是我的工作人员,在 obj C 保留和释放语义上的谷歌搜索将返回一百万个结果。我的问题是你为什么不能搜索它并找到它?
  • 好的,谢谢@stackmonster 生病搜索它。

标签: objective-c ios copy retain retaincount


【解决方案1】:

retain 在幕后的实际作用是:

  1. 在 objc 运行时获取全局锁
  2. 根据指向被保留对象的指针查找哈希表条目
  3. 在该条目中增加一个计数器
  4. 解除锁定

我不认为这在实践中会有那么大的帮助,但我认为这正是您所要求的。

【讨论】:

  • 谢谢@Catfish .. 哈希表的地址值如何.. 我同意。我想知道当我们保留时会发生什么……比如对象会在另一个位置重新创建吗?
  • 我听不懂你在问什么,抱歉。
  • 我想问的是,当我们进行保留时,对象内存中发生的事情是增加的。
  • 它所做的只是增加一个数字。就是这样。对象没有任何反应。
  • 谢谢@catfish 为什么我们要这样做,为什么我们不能用一个分配器生存为什么我们需要保留。如果我的问题如此基本,我很抱歉。非常感谢您帮助我理解。
猜你喜欢
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
相关资源
最近更新 更多