OC笔记 1
.
方法 -> OC语法糖
- 但是只有
set
和get
方法能用
一旦在借口开始的花括号{}里定义的实例变量,默认是@protected
,无法直接访问
虽然可以修改访问权限为@public
,但是不推荐
所以我们可以通过实例方法来修改/获取实例变量的值,苹果也提供了方法让我们方便地通过类名.实例变量
接口:
@interface Animal : NSObject
{
NSInteger _age;
}
- (NSInteger)age;
- (void)setAge:(NSInteger)age;
@end
实现:
@implemenetation Animal
//get方法
- (int)age {
_age = age;
}
//set方法
- (void)setAge:(NSInteger)age{
if(age < 0){
_age = 0;
}else{
_age = age;
}
}
@end
但是还有更方便的定义方法,就是@property
@interface
@property (nonatomic,assign)NSInteger age;
@end
这就可以了
--
内存管理
通过对象的引用计数来决定是否需要释放
ARC
Automatic Reference Counting(自动引用计数)
使用特定方法操作引用计数,当引用计数为0的时候,对象自动被释放
- alloc - 创建一个引用对象并且计数为1
- retain - 使对象的引用计数加1
- release - 使对象的引用计数减1
- autorelease - 使对象的引用计数延时减1
当我们用另外一个变量引用某个对象的时候,需要手动添加计数
Animal *ani01 = [Animal new];//引用计数1
Animal *ani02 = ani01; //引用计数还是1
[ani02 retain];//引用计数加1
[ani01 release];//引用数减1
[ani02 release];//引用数为0,对象被释放
//此时对象不能再被使用
//[ani01 autorelease];使对象在autoreleasepool中登记,在结束后调用依次release,起到延时释放的作用
MRC
Mannul Reference Counting(手动引用计数)
XCode自动帮我们管理引用计数,相当于我们写的retain
与release
自动帮我们填上