【问题标题】:Some doubts about memory-retain in ios applicato?关于 ios 应用程序中的内存保留的一些疑问?
【发布时间】:2012-01-13 04:41:26
【问题描述】:
  1. 在 ios 应用程序中保留 NSObject 有什么需要?

  2. retainCount==1,retainCount=2,.....等有什么区别?

  3. 属性如何处理保留和释放实例变量?

  4. 当我保留/释放NSObject时,保留计数增加/减少1,内存中究竟发生了什么?

【问题讨论】:

标签: objective-c ios memory retain


【解决方案1】:
  1. 保留对象表示您正在取得该对象的所有权。所以你必须在完成后释放一次。
  2. retainCount = 1 表示它从一个地方被强引用。如果retainCount = 2,那么它被两个地方强引用。
  3. 属性,取决于它是保留、复制还是分配属性,以不同方式处理内存管理
  4. 保留计数仅告诉我们该对象有多少字符串引用。 ling 大于 0 时,对象不会从内存中删除。一旦它变为 0,就从内存中删除 obj(调用对象的 dealloc)

编辑:

  1. 如果是保留属性,每次使用“.”设置保留属性时,旧值被释放,新值被保留并分配给属性。复制也会发生同样的情况,只是新值被发送一个副本而不是保留。如果是assign属性,则直接将新值赋给该属性(不释放,不保留)

【讨论】:

  • 如果保留计数增加/减少一个内存的任何变化?
  • 只要保留计数大于 0,内存就不会发生变化。
  • 强引用是当您 inti/alloc 一个 obj,或保留或复制和 obj 时。在这种情况下,这意味着只要这个对象被引用,obj 就不会从内存中删除。说 NSString *str1 = [[NSString alloc] init].. 所以在这里,直到我们释放 str1,内存并没有被清理。所以这是一个强大的参考。当您执行 NSString *str2 = [str1 retain] 时也会发生同样的情况。所以在这种情况下, str1 和 str2 必须释放,以便清除内存。所以有两个强引用指向同一个内存。
  • 并发程序中的retain count有什么用?
  • 在 StackOverflow 中,thr 仅在我的 cmets 中是上面的链接。点击 tht。 “让我们在聊天中继续讨论”.. 点击评论
猜你喜欢
  • 2014-05-16
  • 2012-04-02
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2020-08-07
相关资源
最近更新 更多