码迷,mamicode.com
首页 > 其他好文 > 详细

30-ocARC基本概念ARM和MRC混编

时间:2016-03-04 20:54:57      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

 ARC

ARC的原理是什么

 当ARC开启时,编译器将自动在代码合适的地方插入retain, release和autorelease,而作为程序猿,完全不需要担心编译器会做错(除非开发者自己错用ARC了)。

 


 

ARC有什么优点

完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务

基本上能够避免内存泄露

有时还能更加快速,因为编译器还可以执行某些优化

 


 

ARC的原则是什么?什么是强指针?什么是弱指针?

 只要还有一个强指针变量指向对象,对象就会保持在内存中

1.强指针

默认所有指针变量都是强指针

被__strong修饰的指针

例如:

Person *p1 = [[Person alloc] init];

__strong  Person *p2 = [[Person alloc] init];

2.弱指针

被__weak修饰的指针

__weak Person *p = [[Person alloc] init];

 


 

 

ARC下@property修饰符有哪些

 

strong : 用于OC对象, 相当于MRC中的retain

weak : 用于OC对象, 相当于MRC中的assign

assign : 用于基本数据类型, 跟MRC中的assign一样

 


 

ARC中是怎么对对象进行内存管理的

 

1.ARC下单对象内存管理

1)ARC下,所有的指针都是强指针

2)ARC, A对象想拥有B对象, 那么就需要用一个强指针指向B对象

3)A对象不用B对象了, 什么都不需要做, 编译器会自动帮我们做

2.ARC下多对象内存管理(strong ,weak, assign)

// 在ARC中保存一个对象用strong, 相当于MRC中的retain

@property(nonatomic, strong)Dog *dog;

// 在ARC中如果保存对象不要用assign, 用weak

// assign是专门用于保存基本数据类型的, 如果保存对象用weak

@property(nonatomic, weak)Person *owner;

 


 

ARC怎么解决循环引用问题

 

ARC和MRC一样, 如果A拥有B, B也拥有A, 那么必须一方使用弱指针

也就是说一端用strong ,一端用weak

 


 

ARM和MRC混编

ARC模式下如何兼容非ARC的类?

答:

找到project->targets->Bulid Phases->Compiles Sources->找到相关文件右击右边Compiler Flags添加相关代码

给相关文件添加一端代码,

转变为非ARC -fno-objc-arc

转变为ARC的, -f-objc-arc (不常用)

 


 

MRC转ARC

如何操作Xcode将MRC转ARC

Edit->Convert->To Objective ARC

30-ocARC基本概念ARM和MRC混编

标签:

原文地址:http://www.cnblogs.com/wc-Home/p/5243317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!