iOS -1-内存管理
2015-12-09 21:02
537 查看
内存管理
iOS5新增了 arc(automatic reference counting) 模式,管理的是NSObject对象,不包括 int,float,char 等基本数据类型
在 mac 模式中:
局部变量存在栈中,自动销毁
对象存在于堆中,需手动销毁
retain,release,retainCount (ps. release 是减一,并不是销毁变量,销毁变量的关键是对象的引用计数为0)
一个变量: name, 四种应用方式
1> _name 直接访问成员变量
2> self->name 直接访问成员变量
3> self.name 访问 get 方法,间接访问
4> [self name] 访问 get 方法,间接访问
内存管理中( 对象调用对象)代码规范:
1. 对象有 alloc, 必须有 release
2. set 方法中: 基本数据类型:直接赋值 _name=name;
OC 对象类型:判断, release,retain
if(car!=_car){
[_car release];
car=[_car retain];
}
3.delloc方法:
释放调用的 OC 对象:[_car release];
调用[super delloc];
@property() 中的参数类型
1)set 方法中的内存管理
retain:release 旧值, retain 新值(OC 对象)
assign:直接赋值(默认,非 OC类型)
copy:release 旧值,copy 新值
2)是否生成 set 方法:
readwrite:同时生成 setter 和getter 声明,实现(默认)
readonly:只生成 getter 声明,实现
3)多线程管理
atomic: 默认
nonatomic:性能高
4)setter 和 getter 方法名称
在@ property 参数中,修改对象/变量的 set,get方法名称:@ property(getter=xxx, setter=setXxx:) int abc;
一般用在 bool 类型中 (getter=isXxx),改
循环应用:
@class 声明一个类,告诉编译器,这是一个类名
在.h文件中用@ class 声明
在. m 文件中用#import, 调用类的方法,属性
两个对象互相引用:一个用 retain, 一个用 assign
autorelease:
返回对象本身
把对象放到一个自动释放池
当自动释放池被销毁时,池中所有对象都 release 一次
arc:
不允许写 retain,release ,retainCount
可以重写 delloc, 但不允许调用[super delloc]
在@ property 中, retain 改为 strong,
使用 arc, 好处:
不用关心对象什么时候 release,
代码量少了很多,不用手动写 release
iOS5新增了 arc(automatic reference counting) 模式,管理的是NSObject对象,不包括 int,float,char 等基本数据类型
在 mac 模式中:
局部变量存在栈中,自动销毁
对象存在于堆中,需手动销毁
retain,release,retainCount (ps. release 是减一,并不是销毁变量,销毁变量的关键是对象的引用计数为0)
一个变量: name, 四种应用方式
1> _name 直接访问成员变量
2> self->name 直接访问成员变量
3> self.name 访问 get 方法,间接访问
4> [self name] 访问 get 方法,间接访问
内存管理中( 对象调用对象)代码规范:
1. 对象有 alloc, 必须有 release
2. set 方法中: 基本数据类型:直接赋值 _name=name;
OC 对象类型:判断, release,retain
if(car!=_car){
[_car release];
car=[_car retain];
}
3.delloc方法:
释放调用的 OC 对象:[_car release];
调用[super delloc];
@property() 中的参数类型
1)set 方法中的内存管理
retain:release 旧值, retain 新值(OC 对象)
assign:直接赋值(默认,非 OC类型)
copy:release 旧值,copy 新值
2)是否生成 set 方法:
readwrite:同时生成 setter 和getter 声明,实现(默认)
readonly:只生成 getter 声明,实现
3)多线程管理
atomic: 默认
nonatomic:性能高
4)setter 和 getter 方法名称
在@ property 参数中,修改对象/变量的 set,get方法名称:@ property(getter=xxx, setter=setXxx:) int abc;
一般用在 bool 类型中 (getter=isXxx),改
循环应用:
@class 声明一个类,告诉编译器,这是一个类名
在.h文件中用@ class 声明
在. m 文件中用#import, 调用类的方法,属性
两个对象互相引用:一个用 retain, 一个用 assign
autorelease:
返回对象本身
把对象放到一个自动释放池
当自动释放池被销毁时,池中所有对象都 release 一次
arc:
不允许写 retain,release ,retainCount
可以重写 delloc, 但不允许调用[super delloc]
在@ property 中, retain 改为 strong,
使用 arc, 好处:
不用关心对象什么时候 release,
代码量少了很多,不用手动写 release
相关文章推荐
- nagios安装
- 在Xcode中修改bundle display name让应用名字显示中文
- IOS 的验证码倒计时
- iOS symbolicatecrash工具crash日志分析
- 关于 iOS 的 StoryBoard,接受的那一刻才发现她的美 - 当然美的事物都需要业心照料
- IOS开发中copy和retain的区别
- ios 数组里面的字典,
- iOS-在团队开发过程中控制代码版本
- iOS-证书
- iOS-证书相关
- iOS-APNS证书申请与使用
- iOS-证书申请
- cordova/phonegap/ionic ios 在线更新插件
- iOS-开发者相关的几种证书
- iOS用if语句判断null
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
- iOS运行时机制
- iOS常用的宏(整理)--持续更新
- iOS Device logs 分析
- IOS获取来电去电来电归属系统通知达到效果(一)