每个对象的创建都需要在内存中分配一定的空间,简单的说,因为内存是有限的,所以一些没有必要存在的对象,我们需要及时的去将它释放,还原更多的内存空间(如果不进行释放就会造成”内存泄露”).
因此,在iOS中引入了引用计数(retainCount)这个词汇,规定:只要引用计数为零,对象就会被释放,.
strong属性会使引用计数+1,而weak修饰的对象不会使引用计数改变.
如果定义代理为weak的话,在程序运行的时候不会造成循环引用,对象都会被顺利的销毁. 如果定义代理为strong的话,在程序运行的时候会造成循环引用(意思就是reatainCount不为0,只要有实线引用,计数器就+1),对象都不会的销毁,不会调用delloc方法,从而造成了内存泄露的问题
转载请注明原文地址: https://ju.6miu.com/read-1124562.html