美文网首页
OC 笔记1: ARC与MRC,

OC 笔记1: ARC与MRC,

作者: cry_0416 | 来源:发表于2016-09-18 20:47 被阅读31次

OC笔记 1

. 方法 -> OC语法糖

  • 但是只有setget方法能用

一旦在借口开始的花括号{}里定义的实例变量,默认是@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自动帮我们管理引用计数,相当于我们写的retainrelease自动帮我们填上

相关文章

网友评论

      本文标题:OC 笔记1: ARC与MRC,

      本文链接:https://www.haomeiwen.com/subject/vodgettx.html