ios和android一并学习的体会
如果说为什么要同时学习这两种不同的移动平台,其实有一定的“闲”的因素在里面。
相对于ios,android我是早半年接触的。最开始学习的时候也就是j2ee学习的延续,通过看视频连带看书学了大概一个月的时间,对android有了一个基本的了解。本来是想做个小项目练练手的,由于各种原因没有实现,就把android搁在边上了。
后来自己买了一个MacBook,于是就看起了ios。最开始学习Objective-C的基本语法以及ios初级编程的时候,因为之前的基础还可以,我用了大概4天的时间,说起来也不算是多了,然后又是各种原因放下了。
这两段学习经历使我对移动开发的架构有了更加深入地认识。于是上个月开始,我又重新开始学习这俩。
当我再次搭起android的开发环境的时候,我竟然不知所措,我几乎忘记了android是什么东西,于是用了几天的时候从新从头开始找了基本android入门的书看起来。然而手头上的书确实很out的,无法赶上时代。对于像我这样“盲目”追求最新的程序员来讲这是无法忍受的。于是我找到了最根本的文档,android的官方文档。由于英语能力有限之前没有好好地看过这些东西,为了阅读和学习英语,我就做起了翻译官方文档的工作。用了一周了时间看并使用各种工具翻译了几篇base的文章,结果重新建立了android在我心中的体系结构。(说真的其实android的文档太难翻译,主要是没有想java的那样都是一些比较容易理解的段句子,android的文档编辑者仿佛是为了炫耀自己的文字能力使用各种长句子,让像我这样的非母语者很伤神,有时还要推测一些作者的意思。但是后来发现ios没有这么系统由结构性的文档,我就感谢google的厚道了)。之后,我用一些我新学到的技术做了几个小的demo。感觉学着无趣,就又开始学习ios了。
我本想用同样的方法去学习ios,毕竟ios7一来变化的比android大的多得多。而且Xcode5之后原来熟悉的东西都不见了,原来学ios内存管理是一个重点,Xcode5之前还可以手动选择是否自己来干了内存,现在是必须交给Xcode,你一用release什么的就报错。还好之前学习内存管理还是学的不错不然现在都无法做相关的测试了。(但是从发展的角度讲这些改变对于一个语言或者是ios这个系统来讲都是不错的,这样的强制改变避免了像java这样的碎片化)
我们不妨比较一下这俩的开发区别:
1.开发工具(IDE)的区别
android作为一个开源的系统,它的首选的是最为著名的开源IDE——eclipse。作为几乎是万能的ide,eclipse也为开发android提供了类似开发web的插件。这使原来的开发者能够快速地切换到android的开发。最早进行android开发的程序员都有过没android搭建开环境的痛苦经历,周来android官网上提供了打包定制的android版的eclipse下载,再次降低了android的入手难度。另说一句,google还真为android开发了一个新的ide,我下下来用了一下,结果果断抛弃,正是比javabean还不如的官方ide。
而ios果断自负的使用了自己的Xcode,而且开发ios还非得Xcode,至少我还没有发现其他的。如果eclipse是一个现代的ide,Xcode在某些方面更像是后现代的ide。而且随着ios以及Xcode的发展,有时候会觉得自己写的代码带了一些伪代码的影子,比如里面的一些带“@”的关键字的语法,就像是伪代码。Xcode值得一提的是不让我们去注意View后面的XMl,而是直接给一个谁都看得明白的页面,而eclipse则还很专业地提供源码,以至于学习android不少人都是手动编辑xml开始的。还有就是Xcode引入了“连线”,将代码与图形通过连线的方式关联起来,相当MVC的感觉。完全将开发者从神降为了凡人,可谓是让人人都能编程的后现代之作。
我总觉得eclipse的灵魂是“Alt+/”给人的快感,在这方面强大的提示功能是Xcode所没有的,而eclipse的跨平台性也是值得称道的。
2.java和Objective-C的区别
从历史来讲Objective-C更为悠久。java舍弃了指针的概念,以及卓越的垃圾处理、内存管理机制为人称道且简单易学使它能够花了不到十年时间就能成为最受欢迎的语言。然而太多人的关注与奉献使网络上出现了各种各样的开源框架,而令人难以选择。再这java版本的更新却不真正抛弃一些落后的包或工具类,使初学者学习的时候难以区分。而且java的维护者始终缺乏大版本更新的勇气,使开发者面对而有难以想说明的痛楚,于是关注度渐渐降低。
而Objective-C,它的诞生时间几乎和C++差不多。但是,几年前基本没几个人听过。直到iphone的兴起,它的关注度迅速升到前三超过c++,仅次与java,C。但是Objective-C太过于奇葩,带有一些古老语言的特性,[],@的使用是作为特别的或许也是为了表现出它的与众不同。如果没有Xcode的辅助性,Objective-C的开发效率不比VC高多少。但从语言来讲如今可能是不合事宜了,但Xcode的卓越使我们不能仅仅从语言的本身来看待,而相反有了一些独特之处。毕竟OC运行起来比java快得多,而在移动开发领域,这点是很重要的。
3.开发文档、资料的比较
看过ios的文档之后,才能体会到android开发文档的良心之作。相对于android开发文档的深入浅出,面对ios我不知道从那入手。android文档的一部分,显然是一个很好的教程。比一些市面上能买的书还要讲的好。而反观ios,就是开发文档,你有什么问题,不清楚什么方法的使用就找吧。
而网络上的资料显然也没有android的丰富多彩。
综合来讲,我个人还是比较喜欢ios的。基于对美的热爱,我无法相信一个ide也能做的这样的漂亮。例外iphone给人的高富帅的感觉,令人想到ios的开发者也是一个高富帅,基于这样的向往,给我内心扎下了很好的印象。
ios和android一并学习的体会的更多相关文章
- WebSocket学习笔记IE,IOS,Android等设备的兼容性问
WebSocket学习笔记IE,IOS,Android等设备的兼容性问 一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏 ...
- 简谈WP,IOS,Android智能手机OS
什么是智能手机? 相信到现在这个已经是傻瓜到不能再傻瓜的问题了 智能手机都不懂? 那你活着还有什么意思= = 但是为了谈论今天的三大主角:wp,ios,android 不得不回答一下这个笨笨的问题 如 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- 开园第一篇 - 论移动开发环境 IOS与Android的差异
首先,在真正写技术之前做个自我简介.本人08年开始学c语言 一年后,转vc++.开始接触MFC MFC做了两年.转眼11年了我考上了一个不知名的大专.搞C++发现没有市场了因为当时酷狗腾讯的软件已经日 ...
- javascript开发 ios和android app的简单介绍
先看几个名词解释: nodejs ionic,Cordova,phoneGap,anjularjs react-native,reactjs nodeJs 的介绍参见这里,写的很好http://www ...
- Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- 创业公司求IOS、Android攻城狮一枚
地点:北京CBD附近(地铁1号线大望路) 魅力值:送珍贵期权 你要会: 1. IOS或者Android开发 2.可以处理类似微视/秒拍的视频录制功能 3.熟悉jso ...
- 如何在macox下面配置集成ios和android游戏教程
教程截图: 1.准备工作,配置开发环境: 开发环境:mac ox 10.7.3 + xcode4.2 + ndk r7 + eclipse helios 部署环境:中兴v880 root过了 ...
随机推荐
- php设计模式之观察者模式
观察者模式:能够更便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能性. 利用这种模式可以方便地创建一个对象(观察者),其可以用来“监视”另一个对象(被观察者)的状态.这样,就可以在 ...
- omDialog设计造成控件无法后台取值
http://ui.operamasks.org/website/homepage.html 使用服务端控件,前台进行赋值,但后台确无法取值. 不仅如此,如果里面放置了一个ASp:Button同样无法 ...
- Java核心技术II读书笔记(一)
Char2 XML 解析器:读入一个文件,确认其具有正确的格式,然后将其分解成各种元素,使程序员能够访问这些元素. java库提供了两种XML解析器:DOM和SAX,即文档对象模型和流机制解析器. D ...
- 【转】Xcode添加静态库以及编译选项配置常见问题
原文网址:http://www.cnblogs.com/Quains/p/3276425.html 一,Xcode编译出现Link错误,出现"duplicate symbols for ar ...
- http tcp联系区别
术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到 ...
- MySQL与Oracle 差异比较之六触发器
触发器 编号 类别 ORACLE MYSQL 注释 1 创建触发器语句不同 create or replace trigger TG_ES_FAC_UNIT before insert or upd ...
- Drupal如何处理系统变量?
Drupal的系统变量都保存在数据库variable表中: 然后,开发人员可以通过下面的API函数操作这些系统变量: function variable_get($name, $default = N ...
- PHP 代码质量检测工具的安装与使用
代码统计工具 PHPLOC安装:wget https://phar.phpunit.de/phploc.phar chmod +x phploc.phar sudo mv phploc.phar /u ...
- Mysql报错:1172 - Result consisted of more than one row
执行mysql函数时报错:1172 - Result consisted of more than one row 函数语句中select into语句中WHERE account = userNam ...
- Netmask v. Address Prefix Length
Netmask Address Prefix Length Hosts / Class C's / Class B's / Class A's (Class C) / / , / , / , / , ...