您的位置:首页 > 其它

ARC原理及强弱指针

2016-01-09 16:08 113 查看
一、Xcode使用ARC来对内存进行管理,并不是像JAVA一样的垃圾回收机制,ARC不负责回收内存,而是在代码合适的地方插入合适的内存管理代码(retain、release、autorelease)。

ARC中,判断对象是否该销毁靠的是“强指针”,而不是MRC中的引用计数器,默认的指针都是强指针。所以在ARC中要提前释放一个对象,只需要设置指向该对象的指针为空即可:p = nil;因为当没有强指针指向这个对象时,这个对象就会被销毁。





__weak弱指针对所指的对象没有拥有权,一旦弱指针所指的对象销毁了,这个弱指针就会被置为nil,不会变成野指针,这也是ARC的智能之处。

注意:创建对象时,不能使用弱指针来引用,否则刚创建的对象因为被弱指针指着立马就被销毁了没有任何意义,所以创建对象一定是用强指针来引用,然后才可以将这个对象赋给其他弱指针变量使用。





注:@property (nonatomic,strong)Person *person;

@property (nonatomic,weak)Dog *dog;

strong和weak都是来修饰对象属性的,对于基本数据类型属性依然用assign来修饰。

二、循环引用



解决办法:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: