iOS学习笔记---oc语言第十天
2014-07-07 11:44
393 查看
内存管理高级
一 属性的内部实现原理 assign retain copy
assign 下的属性内部实现
setter方法
@property(nonatomic,assign)NSString *name;
- (void)setName:(NSString *)name{
_name = name;
}
getter方法
- (NSString *)name
{
return _name;
}
retain的setter和getter方法
copy的setter和getter方法
二 dealloc
dealloc是NSObject的一个实例方法,与alloc对应用于回收开辟的内存空间
这个方法在对象引用计数为0时,由系统自动调用
通常我们在dealloc中释放类的实例变量
永远不要手动调用dealloc
在dealloc方法的最后一行,必须要写[super dealloc];
三 便利构造器的内存管理
Person类的便利构造器
Person.m中
+ (Person *)personWithName:(NSString *)name{
Person *p = [[Person alloc] initWithName:name];
return [p autorelease];
}
四 collection 的内存管理
collection就是NSArray,NADictionary,NSSet...等容器类
collection 会自主管理自己的内部元素
加入collection中得对象会被retain
移除collection的对象会被release
collection被释放会对内部所有对象release
五 多态
不同类型的对象在响应同一方法时的不同实现
父类指针可以指向子类对象
多态的特点
父类指针可以指向不同的子类对象
允许在多个类中定义同一个消息接口
可以屏蔽不同子类对象之间的差异,写出通用代码
适应需求的不断变化
一 属性的内部实现原理 assign retain copy
assign 下的属性内部实现
setter方法
@property(nonatomic,assign)NSString *name;
- (void)setName:(NSString *)name{
_name = name;
}
getter方法
- (NSString *)name
{
return _name;
}
retain的setter和getter方法
@property(nonatomic,retain)NSString *name; - (void)setName:(NSString *)name{ if (_name != name) { [_name release]; _name = [name retain]; } } - (NSString *)name { return [[_name retain] autorelease]; }
copy的setter和getter方法
@property(nonatomic,copy)NSString *name; - (void)setName:(NSString *)name{ if (_name != name) { [_name release]; _name = [name copy]; } } - (NSString *)name { return [[_name retain] autorelease]; }
二 dealloc
dealloc是NSObject的一个实例方法,与alloc对应用于回收开辟的内存空间
这个方法在对象引用计数为0时,由系统自动调用
通常我们在dealloc中释放类的实例变量
永远不要手动调用dealloc
在dealloc方法的最后一行,必须要写[super dealloc];
三 便利构造器的内存管理
Person类的便利构造器
Person.m中
+ (Person *)personWithName:(NSString *)name{
Person *p = [[Person alloc] initWithName:name];
return [p autorelease];
}
四 collection 的内存管理
collection就是NSArray,NADictionary,NSSet...等容器类
collection 会自主管理自己的内部元素
加入collection中得对象会被retain
移除collection的对象会被release
collection被释放会对内部所有对象release
五 多态
不同类型的对象在响应同一方法时的不同实现
父类指针可以指向子类对象
多态的特点
父类指针可以指向不同的子类对象
允许在多个类中定义同一个消息接口
可以屏蔽不同子类对象之间的差异,写出通用代码
适应需求的不断变化
相关文章推荐
- iOS学习笔记---oc语言第四天
- ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)
- iOS学习笔记---oc语言第一天
- iOS学习笔记---oc语言第九天
- iOS学习笔记---oc语言第三天
- iOS学习笔记---oc语言第七天
- iOS学习笔记---oc语言第五天
- iOS学习笔记---oc语言第八天
- iOS学习笔记---oc语言第二天
- iOS学习笔记---oc语言第六天
- 黑马训练营--IOS学习---OC语言学习总结2
- 黑马训练营--IOS学习---OC语言学习总结4
- IOS学习笔记02---语言发展概述,计算机语言简介.
- 黑马训练营--IOS学习---OC语言学习总结2
- IOS App入门开发进阶 第一课 OC语言基础学习
- 【初学】iOS学习笔记2-iOS模拟器简体中文系统语言更改
- ios 学习之OC语言总结1
- ios学习笔记之OC篇(一):复制对象的方法
- 一 :ios学习笔记 OC入门2 点语法
- 【初学】iOS学习笔记-@property @synthesize oc=_oc