iOS开发内存管理方案选择:MRC or ARC

glxt305 发布于 2014/10/15 19:46
阅读 6K+
收藏 0

各位大神,上周刚刚开始学习ios,先看完了objective-c,其有两种内存管理方案:自己引用计数和自动引用计数,请教,该如何选择方案,最好可以分享一下实践体会和利弊,谢谢~

加载中
1
y
ylmotol7

为觉得一开始就说mrc好以及arc不好的,说什么语法糖之类的好像有点不负责任,这明显是没有经过使用后对比的结果,并且自己懒得或者比较保守不愿意尝试。就好比java,难道因为java有了回收机制就都去选择c++?难道苹果自己的东西还不知道谁好?我觉得只要自己理解了生命周期,选择最好选择arc,维护成本低啊!即使是新手,也可以选择arc,因为arc同样需要注意内存管理,而不是完全放弃内存管理。之前听有人就说过,这是一个骑马与开车的问题

0
回去干活
回去干活

mrc是一个比较老的方案了,但是我建议你选择这种方案,我学OC也有3个月,最近刚写完一个sdk.

arc只是说在预处理的时候自动加上了retain,release.可以说是一个语法糖.

mrc会让你养好释放资源的好习惯,以后转成C++也会比较方便的,例如cocos2dx也是这样的内存管理方式.

0
glxt305
glxt305

引用来自“回去干活”的评论

mrc是一个比较老的方案了,但是我建议你选择这种方案,我学OC也有3个月,最近刚写完一个sdk.

arc只是说在预处理的时候自动加上了retain,release.可以说是一个语法糖.

mrc会让你养好释放资源的好习惯,以后转成C++也会比较方便的,例如cocos2dx也是这样的内存管理方式.

对arc,我的理解比较泛泛,我的理解就是对alloc new copy mutablecopy 声明的变量,compiler会自动给加上release,然后自己只去手动维护属性中的引用。我有三个疑问:一是compiler怎么判断在什么地方加上release,在方法的最后还是……;二是什么时候添加retain?是在赋值操作的时候吗,比如 NSString* nsstr=[[NSString alloc]initwithstring:@"hello oc world"];NSString* anotherNSstr=nsstr; 编译器怎么判断该不该强引用;三、用arc,是不是程序员只去维护属性中的强弱引用,别的都不用去管了。因为是新手,问题比较多~多谢了

0
回去干活
回去干活

这个是属于引用计数的问题,你查一下文档oc的内存管理方案就行了.

先理解mrc,arc就很好理解了.

0
yoyoso
yoyoso
先把mrc搞清楚然后arc就好弄了,以后面试估计也是主要面试mrc的
glxt305
glxt305
多谢各位了,最近学ios就是为了一个新项目,说是要开会讨论一下内存管理方案问题,通过大家帮忙清楚了不少,谢谢各位了
0
xoHome
xoHome
MRC 因为ARC各种坑  而且面试的时候都会问到MRC哦  不多用怎么去理解
0
佳达

既然MRC这么好?为什么苹果还要出ARC?

0
y
ylmotol7

arc大势所趋,mac中已经推荐使用自动回收了

另外,osc客户端貌似是arc的。。。。

0
王石头
王石头
如果你不熟悉手动内存管理的话,就先不要使用ARC。对于刚开始学IOS的人,我建议从MRC开始
返回顶部
顶部