循环引用一般是这么一种情况:
我创建了一个人的对象和一只狗的对象,我在.m文件中实例化了这两个对象,并且在对象里面互相包含对象的属性,互相引用
在ARC中,如果两个修饰符都是使用strong强引用的话,那么两个对象都不能释放内存,因为互相指向了。这时应该在一边使用weak弱引用。
为什么呢?
因为一方有了弱引用,弱引用一方指针没有了指向,对应的对象内存也会释放。从而导致强引用的一方失去弱指针的引用,retainCount也会为0,随着也会被释放。
其中非ARC也是一样的原理,一边使用retain,另一边要使用assign