大多数情况下使用ARC内存自动管理机制,特殊情况采用MRC手动管理
来源:互联网 发布:华为如何下载软件 编辑:程序博客网 时间:2024/05/27 06:54
Objective-C中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Reference Counting),分别提供对内存的手动和自动管理,来满足不同的需求。苹果公司是强推ARC的(后来xcode版本才出现这个服务功能)。
1,
/autoreleasepool 的使用 在MRC管理模式下,我们摒弃以前在代码中一个个敲retain,copy,release的繁琐用法,NSAutoreleasePool对象的使用,新手段为@autoreleasepool
@autoreleasepool {
Number* num = [[Number alloc] init];
[numautorelease];//由autoreleasepool来管理其内存的释放
}
对与Objective-c中属性的标识符可以总结为:
@property (nonatomic/atomic,retain/assign/copy, readonly/readwrite) Number* num;
(1) nonatomic/atomic,表示该属性是否是对多线程安全的,是不是使用线程锁,默认为atomic,
(2) retain/assign/copy,是有关对该属性的内存管理的。
2. Objective-c语言中的ARC(AutomaticReference Counting)
在ARC内存管理模式下,其属性的标识符存在以下几种:
@property (nonatomic/atomic, assign/retain/strong/weak/unsafe_unretained/copy,readonly/readwrite) Number* num;//默认为unsafe_unretained
其中assign/retain/copy与MRC下property的标识符意义相同,strong类似与retain,assign类似于unsafe_unretained,strong/weak/unsafe_unretained与ARC下变量标识符意义相同,只是一个用于属性的标识,一个用于变量的标识(带两个下划短线__)。所列出的其他的标识符与MRC下意义相同。
(1)对于assign,你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。
(2)对于copy,指定应该使用对象的副本(深度复制),前一个值发送一条release消息。基本上像retain,但是没有增加引用计数,是分配一块新的内存来放置它。特别适用于NSString,如果你不想改变现有的,就用这个,因为NSMutableString,也是NSString。
- 大多数情况下使用ARC内存自动管理机制,特殊情况采用MRC手动管理
- 内存管理 ARC情况下
- iOS 在ARC的情况下成功使用MRC文件
- 手动内存管理(MRC)转ARC
- OC内存管理,MRC,手动引用计数,ARC,自动引用计数
- 内存管理arc,mrc
- 内存管理 ARC + MRC
- iOS 内存管理--使用MRC(非ARC)
- iOS ARC MRC情况下重写setter getter方法
- iOS ARC MRC情况下重写setter getter方法
- iOS ARC MRC情况下重写setter getter方法
- ARC和MRC的内存管理机制
- 内存管理机制MRR/MRC和ARC
- IOS内存管理,ARC,MRC,自动释放池(基础)
- arc下使用mrc
- arc mrc 自动释放 内存
- 内存管理与ARC、MRC
- ARC & MRC下string内存管理策略探究
- Oracle排名函数(Rank)实例详解
- NOIP2000 解题报告
- wordpress如何在多说评论框中设置圆形旋转头像?
- 程序
- JAVA之查找二叉树ADT
- 大多数情况下使用ARC内存自动管理机制,特殊情况采用MRC手动管理
- [POJ] 状态压缩DP专题
- 掌握 Ajax,第 8 部分: 在请求和响应中使用 XML
- [JZOJ4964]Rhyme
- js和java去掉html标签和所有空格
- socket clsoe 是否从epoll set 中删除
- 《自顶向下法》学习笔记——第三章:运输层
- VIJOS基础动态规划试题泛做-I
- 2017/01/22