共7条回复
楼长
·
adad184
回复于 2014年08月31日
可以 我一直这么做 而且 循环在哪里出现呢? 不是单向引用么
2楼
·
董一凡
回复于 2014年08月31日
最简单的证明办法,就是在你的类里重载dealloc,然后如果能调用到那就是正常释放了
针对你说的情况,确实有可能造成循环引用。因为你并没有把类之间的引用勤快描述的太清楚(比如谁持有谁,是strong还是weak),所以无从判断,你先想明白下,为什么delegate要声明成weak,而其他大部分property都是strong。你的情况到底属于哪种。
3楼
·
5楼
·
7楼
·
董一凡
回复于 2014年09月01日
6楼 @k19870203 你还是没有描述清楚你的引用情况,你的AppDelegate里既然已经有全局变量了,那这些全局变量只要持有AppDelegate的strong property那就是循环引用,或许你没有直接持有,但是如果这些变量持有的strong property又持有AppDelegate,同样构成循环引用,甚至你在你的viewcontroller理持有AppDelegate,也可能构成循环引用
但是你这个情况比较特殊,因为AppDelegate是全局实例,所以本来就不存在释放的问题,即便循环引用了,也没有什么危害,毕竟程序退出的时候总是会清理所有内存的。不过从最佳实践的角度出发,总是不应该持有AppDelegate的strong property的,要么持有weak引用,用么使用系统提供的[[UIApplication sharedApplication] delegate]这种形式