之前主要是用C++做开发,Java也有过一些了解,但objective-c还真是从来没用过。
这次打算做个ios上的小游戏练练手,在cocos2d和cocos2d-x之间犹豫了一下,最后还选择了objective-c。毕竟很多人在用,自己也想看看objective-c到底是啥样。
由于有C++的基础,所以基本上上手还比较顺利,有些纠结的地方这里记录一下,备忘吧。
1. 内存管理
C++里完全是程序员自己管理内存了,new了之后自己记得delete就好。obj-c里的管理方式其实也类似,谁申请的谁负责释放,只不过obj-c里采用的是引用计数的方式来管理内存的申请和释放,几个关键字是alloc, retain, release, autorelease。当然了,实际上有了ARC之后,方便了很多,retain, release, autorelease等都不用管了,只需要alloc就可以了,挺方便的。所以,如果实在不想搞懂这些个内存管理的东西,那就不要去搞懂好了,打开ARC就行。我猜Java转过来学obj-c的会更习惯使用ARC,而C++转过来的估计会更愿意搞清楚内存管理的原理。不管怎样,这里推荐使用ARC。:P
当然了,ARC与Java的垃圾回收原理上是完全不一样的,ARC是在编译期完成工作,相当于自动化地帮你在代码中增加释放内存的代码。
如果不用ARC,或者是看以前的不用ARC的老代码,就还是须要搞清楚内存管理的这几个关键字的作用了。解释这些的文章网上很多,大致学习一下也花不了太多时间。
不过有一些obj-c的惯例需要事先了解清楚,不然看这些文章时有时会比较费