拥有着权限:
rop(可保留指针) non-rop(不可保留指针)
我们不能把单纯的将rop 和 non-rop进行转换 因为arc需要知道这个指针的所有权信息
_bridge 操作符:不改变指针的所有权 所有权归rop所有
_bridge_retained : 所有权会转移到non-rop 调用的时候其实在对象身上进行了retain 当non-rop不用的时候需要进行release
_bridge_transfer:把non-rop 对对象的所有权 转交给 rop
c的结构体是不能拥有rop的 可以利用 void* xxx 和 桥接解决
在arc下不可以调用的方法 retain retainCount release autorelease dealloc
在arc下不可以重写的方法 retain retainCount release autorelease
dealloc 方法不可以调用 [super dealloc]
保留环:
某创建a时创建了b (a 1 b 1) 又因为b强引用a 故(a 2 b 1) 当对象不需要a的时候对a进行释放 (a 1 b 1) 没有对象对a 或者 b 又引用 故 a b 内存永远不会释放 导致了内存的泄漏
垃圾回收:可以通过编译器选项进行设置 编译器会跟踪对象 当对象不再被其他对象引用时 就把他释放掉 但是释放的时机是不确定的
arc只是在编译期间自动添加了内存管理的消息(自动添加一些函数retain 等) autoreleasepool 是自动释放池 两者并不冲突