假设出现这种情况:
__weak UIImage *image = [self calculateImage];
// a few lines later...
image = [self calculateImageUsingAnotherProcess];
假设calculateImage
和calculateImageUsingAnotherProcess
返回强引用。
好的,在第一种情况下,image
是weak
,但第二种情况呢? image
会保持weak
方面吗?
答案 0 :(得分:4)
第二个也将保持弱势。声明后无法更改。
答案 1 :(得分:1)
在这种意义上,你无法返回强有力的参考。它是放置引用的容器,指示它是强,弱还是其他。如果你宣布了一个weak
容器,那么你分配给它的任何引用都将被弱化。
按照惯例,calculateImageUsingAnotherProcess
返回的内容除了自动释放池之外都是无主的。
所以,虽然这是真的,但并不是说参考的强度“在声明后不能改变”,而是没有机制允许你尝试这样做,相应地,没有这样的尝试代码。