美文网首页iOS学习
MRC和ARC之间的区别

MRC和ARC之间的区别

作者: iOS_恒仔 | 来源:发表于2016-04-16 08:40 被阅读4517次

block是不是一个对象?是一个对象,苹果官方文档有说明(搜索working with block)

如何判断当前文件是MRC,还是ARC

1.dealloc能否调用super,只有MRC才能调用super

2.能否使用retain,release.如果能用就是MRC

ARC管理原则:只要一个对象没有被强指针修饰就会被销毁,默认局部变量对象都是强指针,存放到

堆里面,只是局部变量的强指针会在代码块结束后释放,对应所指向的内存空间也会被销毁

MRC了解开发常识:1.MRC没有strong,weak,局部变量对象就是相当于基本数据类型

2.MRC给成员属性赋值,一定要使用set方法,不能直接访问下划线成员属性赋

值,因为使用下划线是直接赋值(如_name = name),而set方法会做以下的事情

- (void)setRoom:(Room*)room

{

/*对旧房间进行release,需要注意的是,第一次对_room进行release没有任何

变化,因为刚开始_room的值是nil,对一个空指针release是没有影响的,先判断

是否为同一房间,因为房间相同就不需要release和retain,只有房间不同,才需要对

旧值release,对新值retain

*/

if(_room!= room) {

[_roomrelease];

_room= [roomretain];

}

}

总结:只要block没有引用外部局部变量,不管是在MRC还是ARC中,block都放在全局区(静态区

static)

MRC:管理block

只要Block引用外部局部变量,block放在栈里面.

block只能使用copy,不能使用retain,使用retain,block还是在栈里面

当block代码块结束后就会被释放,这样就无法在其它方法中调用block了

ARC:管理block

只要block引用外部局部变量,block放在堆里面

block使用strong.最好不要使用copy,因为copy的set方法并不是直接赋值,而是在set

方法中会进行进一步的判断,判断是否需要重新开辟内存以及深拷贝,浅拷贝的问题

相关文章

  • MRC和ARC之间的区别

    block是不是一个对象?是一个对象,苹果官方文档有说明(搜索working with block) 如何判断当前...

  • 2020-08-20

    整理 MRC和ARC区别 MRC: (Manual Reference Counting)也就是非...

  • MRC,ARC混编环境配置

    MRC --- ARC(让ARC文件在MRC的环境下进行ARC编译) -fobjc-arc ARC --- MRC...

  • ARC 和 MRC 之间转换

    很久没用过了,记录一下

  • __block和__weak的作用及区别

    两者之间的区别: __block不管是ARC还是MRC模式下都可以使用,而__weak只能在ARC模式下使用。 _...

  • ARC 与 MRC

    1、MRC和ARC MRC:ManulReferenceCounting(手动引用计数) ARC:Automati...

  • Blcok相关经典面试题

    题目:事例分析Block在ARC和MRC情况下的使用。 ARC与MRC在Xcode中的切换:arc-->mrc 更...

  • 迅雷

    手撕一个线程同步安全的单例模式 内存管理机制 MRC和ARC的区别以及ARC是如何不需要手动加一减一的 MRC和A...

  • ARC和MRC

    笔者开始自学iOS的时候是MRC的,不久便接触了ARC。 下面介绍一下我所理解的MRC和ARC: ARC和MRC的...

  • MRC、ARC和autorelease的区别

    中级:MRC、ARC和autorelease的区别 这是Objective C通过引用计数来管理内存的一种方式,M...

网友评论

    本文标题:MRC和ARC之间的区别

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