对oc中内存管理的思考

一直以来我对内存管理的第一反应是对自动引用技术和处理,而对自动引用计数的第一反应就是release释放的处理,那妥妥的本质是autoreleasepool,这几天猛然意识到其实工作中最多的问题是对循环引用的处理,
这方面主要涉及到两方面,一个是block的捕获变量权限引起的问题,一个是观察者模式下强引用观察对象的问题。
针对block,使用weak修饰捕获变量可以解决。或者ARC下对block修饰的变量使用手动解除。
针对观察者则只能使用中间类来打破对被观察者的强引用。
注:观察者主要表现为:kvo,通知,NSTimer
当然NSTimer并不是用观察者模式实现的,但是当timer是repeat模式的时候我们可以抽象为runloop是对timer有观察的特性的。因为本质上来说,timer的方法调用规则是建立在在runloop中的计时器的插桩操作。应该是这个原理,信息来源我忘了,有时间补上。

Posted in iOS