这是强还是弱?

时间:2016-06-28 13:10:25

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

假设出现这种情况:

__weak UIImage *image = [self calculateImage];

// a few lines later...

image = [self calculateImageUsingAnotherProcess];

假设calculateImagecalculateImageUsingAnotherProcess返回强引用。

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

2 个答案:

答案 0 :(得分:4)

第二个也将保持弱势。声明后无法更改。

答案 1 :(得分:1)

在这种意义上,你无法返回强有力的参考。它是放置引用的容器,指示它是强,弱还是其他。如果你宣布了一个weak容器,那么你分配给它的任何引用都将被弱化。

按照惯例,calculateImageUsingAnotherProcess返回的内容除了自动释放池之外都是无主的。

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