ARC基本规则

摘录自易飞扬博客:http://www.yifeiyang.net/以及一米马http://www.1mima.com/?p=117

ARC基本规则

  • 代码中不能使用retain, release, retain, autorelease
  • 不重载dealloc(如果是释放对象内存以外的处理,是可以重载该函数的,但是不能调用[super dealloc])
  • 不能使用NSAllocateObject, NSDeallocateObject
  • 不能在C结构体中使用对象指针
  • id与void *间的如果cast时需要用特定的方法(__bridge关键字)
  • 不能使用NSAutoReleasePool、而需要@autoreleasepool块
  • 不能使用“new”开始的属性名称 (如果使用会有下面的编译错误”Property’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects”)
  • 只要对象的持有者存在(对象被强参照),那么就可以使用该对象。
  • NSString *str = [[NSString alloc]initWithString:@"string"];

    NSString* str2 = str;

    str = [[NSString alloc]initWithString:@"other string"];//  @“string”对象被str2保留了

  • 对象失去了持有者后,即被破弃。

      NSString *str = [[NSStringalloc]initWithString:@"string"];

        __weak NSString* weakString = str;

      str = [[NSStringalloc]initWithString:@"other string"];// @“string”对象被自动遗弃

        

    __bridge关键字说明:
    __bridge只做类型转换,但是不修改对象(内存)管理权;
    __bridge_retained(也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;
    __bridge_transfer(也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值