【问题标题】:Is this strong or weak?这是强还是弱?
【发布时间】:2016-06-28 13:10:25
【问题描述】:

假设这种情况:

__weak UIImage *image = [self calculateImage];

// a few lines later...

image = [self calculateImageUsingAnotherProcess];

假设 calculateImagecalculateImageUsingAnotherProcess 返回强引用。

好的,在第一种情况下imageweak,但第二种情况呢? image 会保持 weak 方面吗?

【问题讨论】:

  • 据我所知,这是一种从强到弱的方式,图像(作为弱)将在内存中,直到强引用指向它。
  • 什么?你解释的方式听起来像克林贡语,我的大脑融化了。 ??????
  • calculateImage 和 calculateImageUsingAnotherProcess 如何返回强引用。 ?图像对象很弱意味着它很弱,不管它指向什么
  • 好吧,我的意思是定义上不弱。
  • 声明一个弱局部变量没有任何意义,除非它被块捕获。

标签: ios iphone objective-c-blocks weak-references


【解决方案1】:

第二个也会保持虚弱。声明后不可更改。

【讨论】:

  • 谢谢!我只是在检查我是否理解正确......
  • 没问题 :) 问这种问题很正常。
【解决方案2】:

在这个意义上,你不能返回一个强引用。放置引用的容器决定了它是强、弱还是其他。如果您声明了一个 weak 容器,那么您分配给它的任何引用都将被弱保留。

按照惯例,calculateImageUsingAnotherProcess 返回的东西将不属于自动释放池。

所以,虽然是真的,但并不是引用的强度“在声明后不能更改”,而是没有允许您尝试这样做的机制,相应地,您的代码。

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2013-05-03
    • 2014-08-06
    相关资源
    最近更新 更多