ARC机制的基本规则及强制规定
来源:互联网 发布:秦始皇活着吗 知乎 编辑:程序博客网 时间:2024/05/16 05:27
ARC机制基本规则:
delegate使用方法:@property (assign) <id>xxxDelegate delegate;
delegate和outlet 应该用 weak 属性来声明
delegate使用方法:@property (assign) <id>xxxDelegate delegate;
delegate和outlet 应该用 weak 属性来声明
在ARC机制下,彻底忘掉retain、release、retainCount和autorelease。以前我们在需要安全使用一个对象时,往往会将该对象retain住,在不需要的时候进行release。在ARC环境下这么做会有编译错误。
在@property声明中,用strong和weak代替相应的retain, copy,和assign。
int, BOOL用assign修饰
__weak 定义的变量一致,该属性所声明的变量将没有对象的所有权,并且当对象被破弃之后,对象将被自动赋值nil
使用ARC的一些强制规定:
- 不能直接调用dealloc方法,不能调用retain,release,autorelease,retainCount方法,包括@selector(retain)的方式也不行
- 可以用dealloc方法来管理一些资源,但不能用来释放实例变量,也不能在dealloc方法里面去掉[super dealloc]方法,在ARC下父类的dealloc同样由编译器来自动完成
- Core Foundation类型的对象仍然可以用CFRetain,CFRelease这些方法
- 不能再使用NSAllocateObject和NSDeallocateObject对象
- 不能在C结构体中使用对象指针,如果由类似功能可以创建一个Objective-C类来管理这些对象
- 在id和void*之间没有简便的转换方法,同样在Objective-C和core Foundation类型之间的转换都需要使用编译器制定的转换函数
- 不能再使用NSAutoreleasePool对象,ARC提供了@autoreleasepool块来代替它,这样更有效率
- 不能使用内存存储区(不能再使用NSZone)
- 不能以new为开头给一个属性命名
- 声明outlet时一般应当使用weak,除了对StoryBoard这样nib中间的顶层对象要用strong
- weak相当于老版本的assign,strong相当于retain
老版本的工程是可以转换成使用ARC的工程的,转换规则包括:
- 去掉所有的retain,release,autorelease
- 把NSAutoRelease替换成@autoreleasepool{}块
- 把assign的属性变为weak
dealloc方法的使用:
- 已经开启了arc,dealloc还可以使用,只是在代码中中不能显示调用,在dealloc方法中不可以包含[super dealloc]。
- 在dealloc中一般用来解除delegate,例如self.webView.delegate = nil;
- 开始的时候注册了notification等,那么是需要在dealloc中把这些notification移除掉
- 如果某个类没有调用dealloc方法,会导致内存泄露,这时要检查在该类内部是否有其他对象调用了该对象导致无法成功释放。
0 0
- ARC机制的基本规则及强制规定
- ARC机制的基本规则及强制规定
- 基本的ARC使用规则
- ARC基本规则
- ARC规则及使⽤
- ARC机制介绍及使用
- ARC语法的一些规则
- OC的ARC机制
- ARC的具体操作机制
- ARC的基本使用
- ios ARC 机制中的strong和weak 属性关键字的原理和使用规则
- 学习笔记---C语言运算符规则及数据类型的自动/强制转化规则
- virtualenv机制简述及强制改名产生的后遗症解决
- .NET : 如何强制规定货币数据的区域性
- ARC规则
- ARC规则
- ARC规则
- ARC(二) ARC规则
- Php的运行模式
- clion undefined reference to `boost::system::generic_category()'
- 【贪心算法】区间调度问题总结
- Spring Data Jpa 自定义方法实现问题
- 51nod1006 最长公共子序列Lcs
- ARC机制的基本规则及强制规定
- 3种求最短路的方法
- Delphi TDataSetProvider的Option属性
- 【51Nod】1102 - 面积最大的矩形面积(单调栈)
- 所有HTTP返回码
- VirtualBox安装CentOS 7(三)
- 安卓学习笔记---Android 中如何关闭Thread线程
- 浅谈CSRF攻击方式
- Oracle中的order by分页排序问题