Android

iOS

内存管理

GC机制 

无GC, 手动管理或ARC机制编译时自动插入内存管理代码

基础视图控制器

Activity

ViewController

视图创建过程

onCreate

viewDidLoad


onResume

viewAppear


setContext(View Object)

initWithNib 或 addSubView(View Object)


View: XML配置

 View: addSubView生成或xib文件生成

遇到多个嵌套View时

Layout类来规划布局,全部是相对布局 可自由控制

由代码创建或xib文件生成

分辨率单位 

dp 做为最小单位控制尺寸

px 做为最小单位控制尺寸


好处是匹配不同屏幕分辨率时不用再做调整,可以自由适应

只有@2x 与非@2x标准,只匹配retain格式

列表页

List

TableView

列表页数据源

Adapter

<DataSource>

列表页控制方法

getCount

numberOfSectionsInTableView


getItem

cellForRowAtIndexPath


因为Android自动布局模式, cell height不用考虑

heightForRowAtIndexPath


不支持多section,需要多个listView展示

支持section

 







从上面我们可以看到:



Android



       大部分是以配置文件(XML)来控制各个类的协作,除了上面的view外,还有全局变量,宏定义等都是以这种形式出现。基中一个优势在于在view的定义时,比iOS更简单,而且基本不用考虑坐标问题,而且Android也基本废弃了坐标的概念,全部以相对布局考虑,从上至下,从左到右考虑页面的排布。 


      另一个优势是它的框架更成熟,而且考虑的更全面,复用性比较好,对于新手来说基本上只要按照约定的规范,可写出不算太难看的代码,这点象Rails。


      最后就是GC了,内存问题基本上不用考虑。



iOS



优势在于原生的cocoa框架性能出色,原生的特效与交互比较友好,如果你遵循它的规范,可以写出一个不错的APP。 


     另外在tableview方面 它多出的section策略 Andriod 也是没有的。


      不过正如苹果的一惯风格,闭源的框架要想定制UI比较难。也正因为这一点,原生的封装使类与类之间耦合的比较紧,所提到的MVC结构,例如ViewController,在创建View方面,并没有彻底将View层分离出去,对于新手来说,写出的代码可以说五花八门。另外对于各种所需的全局配置,宏定义,也是写法各异。 


       最后要吐槽一下的是烦人的frame, 坐标的定义实在是让人头大,如果要想自适应宽高,还得写代码控制,如果还加在现在iPhone的尺寸开始变得丰富,这套机制已经跟不上现在的形式。自动适应 布局也是其中的弱项,比如View的ModeScale只有三项,Andriod有八项之多。Andriod在View控制上面所提供的配置已经非常强大,基本上不用手写代码或自定义类来控制。

也许在cocoa上 CoreText 是唯一还能挽回点劣势的方面吧。


        总之,对于新手来说,用 iOS 你可能入门比较容易,跟着向导做你就可以马上写出一个简单的APP, 不过你要想写出一个漂亮和重用性比较高的APP相对来说是比较难的。而Andriod的话,入门之前你可能要先熟悉他的规范和框架,开始也许会比较复杂,不过你就慢慢会发现这些规范所带来的好处。


        设计模式和设计思想对于一个成熟的开发者是非常重的,不只在功能的实现上。


        作为iOS开发者,我并不是想说iOS开发有多么糟糕,爱及深恨之切,提到的这些也是希望它变得越来越好,不光是在交互上,好的设计思想和框架规范可以在团队协作上发挥非常大的作用。




Android

iOS

内存管理

GC机制 

无GC, 手动管理或ARC机制编译时自动插入内存管理代码

基础视图控制器

Activity

ViewController

视图创建过程

onCreate

viewDidLoad


onResume

viewAppear


setContext(View Object)

initWithNib 或 addSubView(View Object)


View: XML配置

 View: addSubView生成或xib文件生成

遇到多个嵌套View时

Layout类来规划布局,全部是相对布局 可自由控制

由代码创建或xib文件生成

分辨率单位 

dp 做为最小单位控制尺寸

px 做为最小单位控制尺寸


好处是匹配不同屏幕分辨率时不用再做调整,可以自由适应

只有@2x 与非@2x标准,只匹配retain格式

列表页

List

TableView

列表页数据源

Adapter

<DataSource>

列表页控制方法

getCount

numberOfSectionsInTableView


getItem

cellForRowAtIndexPath


因为Android自动布局模式, cell height不用考虑

heightForRowAtIndexPath


不支持多section,需要多个listView展示

支持section

 







从上面我们可以看到:



Android



       大部分是以配置文件(XML)来控制各个类的协作,除了上面的view外,还有全局变量,宏定义等都是以这种形式出现。基中一个优势在于在view的定义时,比iOS更简单,而且基本不用考虑坐标问题,而且Android也基本废弃了坐标的概念,全部以相对布局考虑,从上至下,从左到右考虑页面的排布。 


      另一个优势是它的框架更成熟,而且考虑的更全面,复用性比较好,对于新手来说基本上只要按照约定的规范,可写出不算太难看的代码,这点象Rails。


      最后就是GC了,内存问题基本上不用考虑。



iOS



     

优势在于原生的cocoa框架性能出色,原生的特效与交互比较友好,如果你遵循它的规范,可以写出一个不错的APP。 


     另外在tableview方面 它多出的section策略 Andriod 也是没有的。


      不过正如苹果的一惯风格,闭源的框架要想定制UI比较难。也正因为这一点,原生的封装使类与类之间耦合的比较紧,所提到的MVC结构,例如ViewController,在创建View方面,并没有彻底将View层分离出去,对于新手来说,写出的代码可以说五花八门。另外对于各种所需的全局配置,宏定义,也是写法各异。 


       最后要吐槽一下的是烦人的frame, 坐标的定义实在是让人头大,如果要想自适应宽高,还得写代码控制,如果还加在现在iPhone的尺寸开始变得丰富,这套机制已经跟不上现在的形式。自动适应 布局也是其中的弱项,比如View的ModeScale只有三项,Andriod有八项之多。Andriod在View控制上面所提供的配置已经非常强大,基本上不用手写代码或自定义类来控制。

也许在cocoa上 CoreText 是唯一还能挽回点劣势的方面吧。


        总之,对于新手来说,用 iOS 你可能入门比较容易,跟着向导做你就可以马上写出一个简单的APP, 不过你要想写出一个漂亮和重用性比较高的APP相对来说是比较难的。而Andriod的话,入门之前你可能要先熟悉他的规范和框架,开始也许会比较复杂,不过你就慢慢会发现这些规范所带来的好处。


        设计模式和设计思想对于一个成熟的开发者是非常重的,不只在功能的实现上。


        作为iOS开发者,我并不是想说iOS开发有多么糟糕,爱及深恨之切,提到的这些也是希望它变得越来越好,不光是在交互上,好的设计思想和框架规范可以在团队协作上发挥非常大的作用。