花了一上午的时间来整理以前的博客文章,绝大部分都是关于Swift的语法知识,因为自己最开始是用Swift上手入门的。现在看起来这些文章都十分肤浅。其中部分是官方文档的翻译,部分是自己的理解。自己对知识总是有很强的敬畏,完全没有脸再贴出那些最开始的文章。
但这篇最初拟下的<u>自学计划</u>,还是有必要共享出来。
但是在重新贴出来之前,想说明这是一个自学计划,如果你想参照这个计划来学习,建议有一定的英文基础(当然下面列出的资料绝大部分是有中文版本的)、有过一点编程的知识(我也仅仅是在大学学过C、C++以及工程专业相关的一些有限元算法之类的课程)。当然,更希望你能根据自己的实际来设计一个更加适合自己的学习计划。
Really, anyone can code. It's not that hard at all.
But, before you passionately embark on this journey. You gotta have a plan - no need to be detailed. But, by just showing you some basic steps and their corresponding due dates, you can largely assure yourself this will work. So, psychologically speaking, you set out to be a winner in the very beginning.
The next thing which is worthy of doing is to take a so-called "integrated learning" strategy. Let me elaborate on this a little bit. An integrated learning strategy is something I would also call a miscellaneous learning strategy. Well, the name tells it all - while you are learning, you have to make use of all the senses or mental capabilities that you have. See, while I was following one of the tutorials below to design apps, I don't just read those tutorials through and follow them exactly step by step. Sometimes, I read out loud sentence by sentence and mess with the code. Sometimes, I try to explain to me what those programming terminologies mean, however shallow my understanding is. Other times, I do nothing but sit there reconstructing the code in my mind. Before bedtime, I usually would try to recall how much I have learned today.
As you might have realized this method is very efficient and can be used to learn things other than programming. If you want to streamline this strategy a bit and make it simple. The self-explaining process is something that should never be left out - when you can make others understand something, then that "somethingF" has definitely been truly conquered by you.
So, I mentioned I bought this Mac on February 27th. I spent half a day to download necessary apps and familiarize myself with this machine. And, then I began scavenging through the Internet on how to start iOS programming. I found two beautifully written articles, which inspired me. They are also easy-to-follow step-by-step tutorials. So, I paste the links here just to show my respect.
Based on these two tutorials. I designed my own plan, which is originally written in Chinese. And I don't have any intention to rewrite this. So, I will just leave it be this way. This plan is not finalized yet and will constantly be adjusted and revised - simply because I haven't been through all the stages myself.
入门阶段(阶段一:时长30Days)
入门教材的选择:
- 一定要极易上手。也就是说自己在编程语言(Swift、OC)并不熟悉的情况下,仍然能够写出一个功能完整的简单App。
- 教程应该简洁地、清晰地在整个学习的过程中讲解了iOS编程的重要概念、编程语言的语法规则,能够让自己作为初学者也能够容易、正确地理解。
推荐的材料(材料半数是英文原版,但是也可以搜索到中文翻译)如下,材料的学习顺序也可以作为参考:- The iOS Apprentice - Getting Started
这套教程有4个App,每个App的功能都很全面,完全是fully-functioned的产品。所以这套教程的价值非常好。但是,我个人感觉学习曲线比较陡,每一个App都有很多内容需要去理解:比如,在第一个小游戏中,作者就加入了显示html内容,这对于一个新手来说,可能是比较难理解的(尤其是像我这样并没有什么编程基础的人)。所以,我跟完前两个App,就换到了Apple自己的入门教程:Start Developing iOS Apps (Swift)。之后,再继续肯这个部分的教程。 - Start Developing iOS Apps (Swift)
在完成iOS Apprentice的前两个App之后,我开始使用这个教程,而这个教程有很多内容复习了iOS Apprentice学到的内容。所以,这个对于学习来说是非常好的;其次,我在学习Apple的这个入门教程的时候,可以利用学习到的知识,自己去实践,而不用完全跟着教程走。
因此,将自己对这三个教程的学习路径总结起来,大概是这个样子的:- iOS Apprentice - Book One (Getting Started)
- iOS Apprentice - Book Two (To-do List)
- Start Developing iOS Apps (Swift)
- iOS Apprentice - Book Three (Photo Album)
- The iOS Apprentice - Getting Started
本来打算将iOS Apprentice这四本书完全看完。<u>但是有一个问题自己很难解决:自己仅仅是在重复一个看书、敲代码的过程。但是,对于为什么要使用这个UI控件,这个UI控件还能够使用在什么场景之下,自己就不能很好回答。</u>但是对于一个App来讲,一般来说无非是40%左右的UI,加上30%左右的网络,再加上30%左右的其他。UI这个部分自然是十分重要的。
因此,下一个阶段的学习计划明显要做调整。要将整个UI部分的编程通过大量的小Demo的编写,实现对绝大部分常用控件的精通。举个例子:比如文本框UITextField的使用就有很多注意的地方:
- 外观上:占位文字placeholder、attributedPlaceholder;
- 密文输入:secureTextEntry;
- 右边清除按钮在何时显示;
- 左边可以添加一个视图;
- 如何监听该文本框(target action、delegate、还是notification机制);
进阶阶段(阶段二:时长45-50Days)
阶段二这个部分主要是深入学习编程语言和完善自己UI、多线程、网络和第三方框架的知识。
编程语言
通过第一阶段的学习,你应该对Swift语言有了一个基本的理解,同时能够理解面对对象的编程。那么这个阶段你必须掌握另外一门语言Objective-C,尽管现在Apple力推Swift语言(看文章日期),但是目前许多的公司的项目应该还是OC语言编写和维护的。
Apple官方有一门很权威的OC语法的书,中文版也有人翻译出来了。只需要你好好搜索一下就OK。
UI、多线程和网络
请购买一个比较新的培训班课程(你可以自行选择购买途径)。为甚么自学还学要培训班教程?你可能会问。答案很简单,<u>你的时间很宝贵</u>。一定要记住,编程是一门严重依赖经验的技术,当你能够从别人那里在短时间内获取到如果自己单独摸索需要较长时间才能够获得的经验教训,这是很值得的事情。
就以刚才UITextField的例子来说,你如果是自己摸索,我相信你一定能搞懂那些基本的东西。但是如何将刚才所学的东西,写一个成品的拿得出手的(不用炫酷吊炸天)的登陆页面Demo出来,你可能又得花两天时间。但是手里面有教程的话。你半天就能写一遍,剩下的一天半,你可以把刚才的代码再写个三、四遍;或者去学习文档中其他没有提到的UITextField的属性和方法;或者继续后面的学习;或者总结一下前面学习的内容。看到了吧,优势就是这么明显。
当然,你有可能发现到了后期,你在2倍速度播放的情况下还能很轻松地看出这个老师内容讲错了,那也请你看完。因为,谁都会错;另外,他可能会讲到一些其他的内容。
<u>你的时间很宝贵</u>,所以切记如何快速、全面的掌握知识是最重要的事情。文章开头,装逼用英文提到了“integrated learning strategy”这个东西。实际上就是一个学习方法的问题。你在学习的过程要做到自己不是被动接受,而是主动获取,要整合自己所有的感知来学习每天的内容。每天睡觉前,我都会快速的复习一下今天学习的知识;有时候做饭的时候回将今天学到的内容讲述给自己听;如果,你有一个学习的伙伴,那就更好了(可以把内容讲给你的伙伴听,我做过大概一年的英语老师,我深知当你自己能讲清楚的时候,你一定是明白的)。
项目实践(阶段三:时长30Days)
过了这个阶段,不仅仅是你iOS编程的知识有了提升,应该对于一些常见的设计模式也有了理解。更重要的是,你已经完全入门了,所以关于如何学习编程你应该很清楚了,学习的速度和方法都应该有很大的提升了。
那还需要做什么??
还可以继续你购买的教程,来模仿一些较完整的项目;
当然,你也可以直接利用你学到的技术来模仿自己喜欢的App;
到了这里,你就自由了。