ARC(Automatic Reference Counting)

arc使用注意事项

1. outlet 属性推荐用weak 来声明,因为他们已经是控制器层级中的一部分了.唯一需要用strong类型的outlet 属性,就是在xib中,从FilesOwner连线到顶级对象的那个

2, retain  release autorelease 不能再用了  retain 关键字依然有效只不过是strong的一个代号,不过最好还是用strong,因为是正确的语句.copy在属性中需要的地方用  delegate 用unsafe_unretained;

strong. 这是以前的retain的一个代号.strong 属性将会成为他所指对象的所有者.

weak   这个属性 表示若引用指针,当他指向的对象被销毁时,他会自定被设置成nil  ,记住  在outlet 上使用它 unsafe_unretained  这和以前的assign 等同.

copy  .这个和之前是一样的   他创建一个对象的拷贝,并且创建一个强引用关系

assign   你不再允许 在对象上用这个修饰符 ,但你仍然能在简单类型的值,比如 BOOL ,int 和 float 中  用到它

3. 对象使用完之后要 = nil , 完全删除 对象的所有者的,,对象才能被释放,属性不用.

自动释放池的使用中非arc 中:  NsAutoreleasePool *pool =[[NSAutoreleasePool  alloc] init ];



----------------------------------------------------------------

9.__bridge  桥接 由oc---> c  的转化 转换时 c需要手动管理内存内存引用计数 没有产生修改 for  example :  void *   _people ;

People*people = [People  new];

_people= (__bridgevoid*)people;

CFRetain(_people);   //需要手动给c的_people 引用计数加1;

------------------------------------------------------------------------------

   __bridge_transfer  c 转换为 oc 对象 时使用  在使用场景,当c 对象 转换为 oc 对象之后, c的指针 不再使用后使用

------------------------------------------------------------------------------

 __bridger_retained   oc 转换时 ,内存引用计数 + 1;  for  example :  void *   _people ;

People*people1 = [People  new];

_people1= (__bridge_retainedvoid*)people1;

------------------------------------------------------------------------------

你可能感兴趣的:(ARC(Automatic Reference Counting))