欢迎来到HDUISA wiki,如果这是你的第一次到来,请点击此处注册

iOS 篇

词条维护者:veightz

下面废话我自己都觉得比较多,简单地理一下。

要学 iOS 的话,首先学好 ObjectiveC。 如果你想走 Swift 路线的话,首先学好 ObjectiveC。 要学好 ObjectiveC 的话,首先学好 C。 C 要学到什么程度呢,我就告诉你 iOS UI 库里的控件对象,全是指针。

不知不觉学习 iOS 开发已经一年多了,想起一开始遇到的种种困难,也不知道自己怎么一路走来。

无线这几年都比较火热,协会里比较专注无线的人并不多,尤其是 iOS。这也从侧面反映了移动开发有一定的入门成本。

基础


说实话,如果同学们没有一点编程经验,或者对编程本身没有太大的概念,我并不建议一开始就上手 iOS 开发。如果是第一次接触编程,当然也是没问题的,只是要做好心理准备,可能会比想象的难。

首先是语言,iOS开发需要使用 ObjectiveC 语言,不知道有没有人听说过 Swift 这门年轻的语言,不可否认 Swift 的确有巨大的魅力和令人期待的未来,无论你是否是一个 Swifter,你都需要很好的掌握 ObjectiveC。

然而 ObjectiveC 的语言相对来说,还是比较独特的。可以这么说,你学会了 C 语言的函数调用,基本能之间看懂市面上80%语言的函数调用,而 ObjectiveC 的函数调用,你可能在一段不短的时间里都看得比较崩溃。如果有一定 OOP 的经验,再稍加探索,这条路就会轻松不少。

环境


# 一方面是学习环境,由于 iOS 的人并不多,尽管火热,但是经验丰富的 iOS 开发者仍旧不是太多。交流和探索之路会相对比较孤独。国内靠谱的学习网站也不多,大多是国人大牛的博客。系统性的资源网站基本都是英文的,或者直接啃官方文档,再或者是看系统库头文件里面的注释。所以对读英文要有一定的心理准备,并且一开始面对一大堆术语,也有不小的压力。

# 另一方面是开发环境,iOS 开发入门的第一步开始,不是一个单文件,而是一个简单的小工程。这意味着里面已经有一大堆东西(虽然都各自有意义)在里面了,你可能开始是就茫然不知所措。同时稍一修改你的工程文件,就可能造成你的 App 一运行就崩溃。在学习的一开始,对整个环境的理解比较混沌时,也不太容易找到描述这个问题的一些信息,只是觉得,呀,怎么一运行就挂了,可能加大了排除故障的难度。当然,这也是协会带新人的一个很大原因。 提到这个问题,不得不说下,相比其他方向的学习,你们需要更早的接触 git – 一个代码版本管理软件。它能帮助你管理你代码的一次次修改,就像 Windows 的创建系统还原点。在你无意导致程序崩溃的时候,它可能帮你回滚到你创建的某个点。同时它也能帮你看清,你的一些操作,本质上改变了什么。 git 一开始学习起来很痛苦,一大堆概念不知所以,希望不要急于速成,坚持使用。我也是接触了大半年,才开始有一点头绪。

入门


对语法有一定了解后,可以去网易公开课,找斯坦福 iOS 的教程,有一位白胡子老爷爷讲得很不错,也是国内很多前辈的入门恩师。这个阶段可以接触一些常见的类,UIViewController / UIView / UIScrollView / UIImageView / UITableView。也熟悉一些概念,如 KVO / MVC / Delegate / DataSource。

这个阶段最重要的事情,就是学会用语言表达逻辑后,使用 iOS 提供的类,去展现一些视觉。

这个时候,对 iOS 混沌的世界慢慢开始看得清晰,可能你觉得已经知道怎么去做个简单的 App。

进阶


这个时候,很多好玩的东西可以开始玩起来了。知识体系上,并发异步网络,数据缓存,多线程开发, Runtime, RunLoop,AOP 等。UI 体系上,Core Animation,AutoLayout,Size Class,UICollectionView 等。工具上 lldb,Reveal,chisel 等。反正爽得飞起,等你到了这个阶段,已经完成了 iOS 的入门。

高级


哦,我还在进阶。

Android 篇

词条维护者:weiwei

作为一个接触android不过1年的菜鸟,实在不能说在这里是想教你们一些什么,更多的是跟你们一起分享吧。

基础


Android是使用java作为主要编程语言的,也有会用上C或者C++写的。我们之所见的APP,其背后都是一行行代码堆叠而成的。如果你没有任何的编程基础,那么我建议你先从C语言开始学起,当然你也可以从java开始学起。不过,如果你想打下比较扎实的基础,建议你还是从C开始学起。然后在学习java,学好了编程语言,你才能走好接下来的路。

环境


前不久爆出的xcodeghost事件让ios开发者感觉很蛋疼(楼上的veightz学长,你疼吗?),原因就是苹果公司没有大陆的服务器,所以访问ios的开发页面比较慢。当然ios开发者无疑比android开发者要幸福,起码他们面对的不是“您访问的页面不存在”。由于一些众所周知的原因,Google公司的部分服务不能在大陆访问,也就导致了这么一个现象——20%的初学者被挡在了墙里,并且选择了放弃。所以,翻墙是你成为一名Android开发者,安全者首先要学会的事情。

其次就是开发Android所需要的庞大的编程环境,Android Studio是Google在开发方面的“亲儿子”,完整一点的Android SDK基本都在二十个G以上,如果你打算完全通过VPN来下载的话,一晚上就可以了。在我开发的时候,确实也碰到过很多坑,比如包重复导入,最低适配版本,权限控制等等。这些坑你们自己肯定都得一个一个踩过来,所以如果碰到解决不了的问题,不要烦躁,出去走一圈,说不定回来就有解决思路了呢。

想要搭建Android开发环境,首先要搭建java的编程环境,包括jdk,jre。至于学习工具方面,我会在后面具体说。

学习途径


网络视频教学网站,比如慕课网,极客学院,网易云课堂等等。有系列的,也有专题的。 比较第一种,我更推荐第二种——看书。毕竟看人家的视频,是人家的思想,看书你就会有自己的思考。具体推荐书就不推荐了,不过人民邮电出版社,机械工业出版社,图灵图书,华章图书系列都不错,不光光实在Android,在IT方面,这些出版社出版的都不错。

入门


看完java之后,你基本可以开始编写android了。 首先,Android的四大组件要知道,Activity,Broadcast Receiver,Content Provider,Service。这是最最基本的东西,一般来说,刚刚开始写,用的最多的是前两个。 其次,Android的四种基本布局,LinearLayout,RelativeLayout,FrameLayout,TableLayout。以及一些基本的控件,Button,TextView,EditView等等。对这些的理解运用决定了你的APP是否好看。 有了上面的两个点,你就可以写出一个最最基本的APP了。

进阶


开始引用第三方库,当然,你要看懂简单的第三方库,如果只会导入,却看不懂,那你就发挥不出一个优秀的第三方库的功能。 Android的数据库——SQLite,是一款轻型的数据库,更适合性能较低的移动端。语法还是一般的SQL语法,有两种不同的方法进行查找。 还有很多我至今都没有玩过的技巧。

高级


楼上的都是进阶,我就更不用说了。

打印/导出