@property的属性 strong 和 weak 如何理解?

在ObjectiveC里,用@property访问所有的实例变量。@property有一对属性:strong 和 weak。官方文档里的解释晦涩难懂;Stack Overflow里的用户RDC (http://stackoverflow.com/users/1371853/rdc) 给出了形象的解释:

把对象想象成一条狗,它要跑 (be deallocated)。强指针就像一条拴在狗脖子上的狗链;只要攥在手里,狗就跑不了;如果5个人攥着5条狗链都拴着狗 (5个强指针指向对象),除非5条狗链都撒开,狗就跑不了。弱指针就像是孩子指着狗喊“看!狗!”;只要狗链还拴着狗,孩子就能指着狗喊。当所有狗链都撒开,不管有多少孩子指着狗喊,狗都跑了。当最后一个强指针不再指向对象,对象就会被释放,所有弱指针清零。我们什么时候使用弱指针呢?只有当你想避免保留循环 (retain cycles,) 时,我们才使用它。

posted @ 2015-08-20 16:48  Deric  阅读(251)  评论(0编辑  收藏  举报