加载中…
个人资料
WorfHackG
WorfHackG
  • 博客等级:
  • 博客积分:0
  • 博客访问:145,081
  • 关注人气:44
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

IOS ARC关键字说明

(2014-07-14 10:34:24)
标签:

iosarc

strong

weak

自动引用计数

分类: IOS之ARC
                                                                                                                                     
ARC
    自动引用计数
ARC不是垃圾回收,而是编译器自动插入代码来减少程序员的代码输入和失误。
    同时比垃圾和效率要高,因为其不影响运行时间,相当于自己管理内存。
   
总是通过属性来管理实例变量(init/dealloc除外),在dealloc中释放所有属性。 dealloc中会自动加入释放实例变量的代码,因此不必要手段增加释放实例变量的代码。不需要手动调用[super  dealloc]  
不要调用retain,release,autorelease,编译器会自动插入相关代码。 注意命名方式,不要以copyXXX方式命名不想进行retain的方法,编译器会根据方法名自动retain。  
C语言结构体中不要有对象指针    
id和void*只能通过桥接转换来进行转换    
不要使用NSAutoreleasePool,而是使用@autoreleasepool{}代码块。 转换ARC代码:Edit->Refactor->Convert  to Objective-C ARC  
strong 相当于retain。
    Strong在ARC环境为默认属性类型。
@property  (nonatomic,readwrite,strong)NSString *title;
    @property (strong, nonatomic) UIViewController
*viewController;
    @property (nonatomic,  strong) id  childObject;
Default
weak 取代之前的assign,对象销毁之后会自动置为nil,防止野指针。
    Assign不能自动置为nil,需要手动置为nil。
     Delegate基本总是使用weak,以防止循环引用。特殊情况是,希望在dealloc中调用delegate的某些方法进行释放,此时如果使用weak将引起异常,因为此时已经是nil了,那么采用assign更为合适。
@property  (weak, nonatomic) IBOutlet UIButton *myButton;//处于最顶层的IBOutlet应该为strong
    @property (nonatomic,  weak) id  parentObject;
    @property(nonatomic,readwrite,weak) id
  delegate;
    @property (nonatomic,  weak) NSObject  *delegate;
 
assign 对基础数据类型(NSInteger,CGFloat)和C数据类型(int,  float, double, char等) ’@property  (nonatomic, assign) int n;
    @property (nonatomic, assign) BOOL isOK;
    @property (nonatomic,  assign)  CGFloat scalarFloat;
    @property (nonatomic,  assign)  CGPoint scalarStruct;
Default
retain NSObject及其子类。
    Release旧值,retain新值。
    Retain是指针复制(浅复制),引用计数加1,而不会导致内容被复制。
@property  (nonatomic, retain)UIColor *myColor;  
atomic   Default
nonatomic 非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能    
unsafe_unretained      
copy 复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。 @property  (nonatomic,copy)NSString  *title;
    @property (nonatomic, copy) NSMutableArray
*myArray;//not recommended
    @property (nonatomic, copy) SomeBlockType someBlock;
 
readonly      
readwrite     Default
retain cycle
    循环保留
delegate和block是产生retain  cycle的主要原因    
dealloc 移除观察者observers
    注销通知notification
    设置非weak的delegate为nil
    取消timer
   
                                                                                                                                                 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有