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