OC系列高级-内存管理关键字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC系列高级-内存管理关键字相关的知识,希望对你有一定的参考价值。

一.MRC中@property关键字

1.assign,retain,copy

这几个关键字用语setter方法的内存管理

assign:一般用于非oc对象,直接自信赋值操作

retain:一般用于oc对象,那么将retain新值,release旧值

copy:将release旧值,copy新值

一般默认是assign

2.nonatomic和atomic

这两个关键字用语多线程管理,nontomic性能高,atomic性能低,不显示使用以atomic为默认值

3.readwrite和readonly

这两个关键字用于说明是否生成setter方法

readwrite将自动生setter和getter方法,readonly只生成getter方法

默认是readwrite

4.setter和getter

这两个关键字用于给setter和getter方法另外起一个名字

例如:@property(setter = a:,getter = b)int age;相当于取值方法名为b,设值方法名为a

二.自动引入计数器ARC

ARC模式下,创建的新对象由以下关键字来限定

_strong:由_strong修饰的为强指针,对象只要有强指针指向就不会被销毁,每当一个强指针指向一个对象,该对象的RC+1

_unsafe_unretained:这个修饰的对象不会改变RC值,只表示对对象的引用,当所指向的对象销毁时,该指针不会变为nil,仍保留原有的地址

注意点:

1.在ARC模式下,MRC的retain和release等方法不可用,  ARC模式下,@property关于内存管理的修饰符为strong和weak,(MRC下的retain和assign不可用),表示声明为强指针还是弱指针,通常情况都是strong,但是在循环引用却不是

2.在MRC模式下,将一个对象赋值给另一个对象

        Person *p1 = [Person new];
        Person *p2 = [Person new];
        //p2失去对对象的控制权时要先release
        [p2 release];
        p2 = p1;

 

以上是关于OC系列高级-内存管理关键字的主要内容,如果未能解决你的问题,请参考以下文章

OC系列高级-内存管理二

OC - 浅谈内存管理

oc知识点 内存高级

OC基础--OC内存管理原则和简单实例

OC系列高级-类与协议

OC系列高级-代理