Tencent / VasSonic

VasSonic is a lightweight and high-performance Hybrid framework developed by tencent VAS team, which is intended to speed up the first screen of websites working on Android and iOS platform.
Other
11.81k stars 1.61k forks source link

MRC vs ARC in iOS #259

Closed zhongwuzw closed 6 years ago

zhongwuzw commented 6 years ago

在看iOS的源码时,发现框架都是使用的MRC来管理内存的。很好奇原因是什么呢?ARCMRC相比是存在某些劣势么?

按我的理解,ARC相比于MRC是存在很多的优势的:

  1. 更安全,如果不刻意自己犯错,基本没有内存问题。
  2. 开发时不用考虑手动的内存管理,提高开发效率。
  3. 执行速度更快,因为编译器在插入retainrelease会作优化,既移除一些不必要的retain/release

暂时能想到的是MRC编译时会比ARC快一点?

sonic-ios-dev commented 6 years ago

ARC已经很成熟了,并没有刻意去规避不使用ARC,缘由是因为VasSonic是在iPhoneQQ上面做的一个优化框架,而 iPhoneQQ是一个从MRC时代开始创建的项目,并且对安装包大小有比较严格的要求,在同等代码情况下,ARC编译的二进制会比MRC编译出来的要大,所以综合考虑就采用的MRC来控制内存。

zhongwuzw commented 6 years ago

@sonic-ios-dev 了解,我也验了一下用Xcode 9.4.1将demo打包后的包大小,MRC下是227KB,ARC是254KB. 虽然差距不是很大,但是我理解应该和很多的因素有关吧,比如编译器版本,库的代码实现等。