iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
来源:互联网 发布:个人下载网站源码 编辑:程序博客网 时间:2024/06/14 20:55
自动引用计数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;Defaultweak取代之前的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 <MyDelegate> delegate;
@property (nonatomic, weak) NSObject <SomeDelegate> *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;DefaultretainNSObject及其子类。
Release旧值,retain新值。
Retain是指针复制(浅复制),引用计数加1,而不会导致内容被复制。@property (nonatomic, retain)UIColor*myColor; atomic Defaultnonatomic非原子性访问,对属性赋值的时候不加锁,多线程并发访问会提高性能 unsafe_unretained copy复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。@property (nonatomic,copy)NSString *title;
@property (nonatomic, copy) NSMutableArray *myArray;//not recommended
@property (nonatomic, copy) SomeBlockType someBlock; readonly readwrite Defaultretain cycle
循环保留delegate和block是产生retain cycle的主要原因 dealloc移除观察者observers
注销通知notification
设置非weak的delegate为nil
取消timer
参考:
1. http://amattn.com/2011/12/07/arc_best_practices.html
2. 其他网络资源
0 0
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- iOS 关键字 copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别
- iOS--定义变量中的指示符assign、atomic(nonatomic)、copy、readonly、readwrite、retain、strong、weak、unsafe_unretained
- IOS属性(@property)的修饰词assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite解释、以及一部分内存优化方法
- object-c中的assign,retain,copy,atomic,nonatomic,readonly,readwrite以及strong,weak
- 属性的特性assign,retain,copy,strong,weak,nonatomic,atomic,readonly,readwrite的区别与介绍
- object-c中的assign,retain,copy,atomic,nonatomic,readonly,readwrite以及strong,weak
- Objective-C——retain/copy/assign/atomic/nonatomic/strong/weak/readonly/readwrite详解
- copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别
- Objective-C——retain/copy/assign/atomic/nonatomic/strong/weak/readonly/readwrite详解
- 关键字(nonatomic/atomic)、(copy/retain/assign/strong/weak )、(readonly / readwrite)、(@property/@synthesiz
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- 初步接触angular.js---一些基本概念的理解
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- 12. 分配排序
- eclipse快捷键
- 2014新生暑假个人排位赛06 -444. 爱好和平 (数组模拟邻接表+dfs)
- iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
- ViewPager 详解(一)---基本入门
- 布隆过滤器(Bloom Filter)
- STL--B - Hardwood Species
- ural 1008 Image Encoding bfs
- Codeforces Round #260 (Div. 2)A. Laptops
- 2054A==B?hdu
- HDU 1028 Ignatius and the Princess III
- uvaLive 6667 Longest Chain ( splay )