黑马程序员--O-C内存管理
来源:互联网 发布:mac 文件夹半透明 编辑:程序博客网 时间:2024/06/05 09:55
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
由于在O-C开发中,要用到很多对象,而O-C不会自动释放内存,所以需要管理内存。
O-C内存管理
Object C用引用计数的方式进行内存管理,由于所有的对象都继承于NSObject,因此所有的对象都可以接受NSObject的三个方法:
-(id)retain;
-(void)release;
-(unsigned)retainCount;
retain方法将对象的引用计数加一并返回该对象,release将引用计数减一,retainCount方法返回对象当前的引用计数。
当采用new、alloc、copy方法创建一个对象时,引用计数加1。当一个对象的引用计数被置为0后,系统会自动向对象发送一个dealloc消息,将其占有的资源释放。通常情况下,如果一个对象的初始化过程调用了其他资源,则应该重写改对象的dealloc过程,保证在对象的销毁期正确释放这些资源。
dealloc
-(void)dealloc{
[super dealloc];//一定要调用父类的dealloc方法,并放在最后
}
@property(参数1,参数2)属性
参数分三类:读写属性、setter处理和原子性。
读写属性:readonly只读和readwrite读写。只读就是只能调用get方法,读写是默认的,get和set方法都能调用。
setter处理:assign、retain、copy。assign直接赋值,用于基本数据类型;retain释放原来的值,保存新值,用于继承NSObject的对象;copy释放原来的值,copy新值.
原子性:atomic和nonatomic。atomic多线程安全,占内存.nonatomic不提供线程安全,一般iphone开发用nonatomic
@property (retain) Notebook *note;
相当于:
在.h文件中
@property Notebook *not;
加上在.m文件中
-(void)setNotebook:(Notebook *)note{
if(_note != note){
[_book release];
_book = [book retain];
}
}
BOOL类型的get和set方法,例:
@property ( getter = isOn) BOOL machineOn ;//一般都以is博哦了
@property给get和set方法重命名方式:
@property (nonatomic, getter = )int num;
retainCount值为unsigned long,用%zi(z无符号(正负号))
- 黑马程序员--O-C内存管理
- 黑马程序员------[Objective-C]内存管理
- 【黑马程序员】---Objective-C内存管理总结
- 黑马程序员----objective-C 内存管理
- [黑马程序员]C语言内存管理
- 黑马程序员—Objective-C内存管理
- 黑马程序员-内存管理
- 黑马程序员------内存管理
- 黑马程序员---内存管理
- 黑马程序员------内存管理
- 黑马程序员------------内存管理
- 黑马程序员----内存管理
- 黑马程序员—Objective-C基础_内存管理(1)
- 黑马程序员—Objective-C基础_内存管理(2)
- 黑马程序员 之 Objective-C 内存管理与黄金法则
- 黑马程序员-Object C之set方法的内存管理
- 黑马程序员——Object-C基础(九)内存管理
- 黑马程序员——Objective-c——内存管理
- redis渗透中的getshell问题总结
- 深度学习学习笔记
- Java概述与安装Path环境变量配置
- (c语言)指针和数组下标
- 黑马程序员——c语言的进制表达方式,位运算,数组,字符串数组
- 黑马程序员--O-C内存管理
- UITextView用法总结
- 1_SVN简介及环境搭建
- 8、泛型特性
- iOS 后台播放音乐
- #php中几种页面的跳转方法
- Android中引入第三方Jar包运行时出现java.lang.NoClassDefFoundError
- 一步一步学习androidNDK编程(java给c传递数据)
- 第一份工作总结