怎样才能学好iOS开发?这是很多初学者的疑惑。在这里,我想说,学习是一个循序渐进的过程,是一个持之以恒的过程。所以最重要的是:你认为自己可以学好iOS开发,认为自己可以坚持下来,这是关键。今天在这里,给大家一些学习iOS的建议和方法。
一、怎样学习?学习途径?
个人认为学习iOS最好的途径是参加系统培训。当然也不否定天资比较高的同学,可以自学或者通过网络资料及书籍进行学习。这里我主要说一下系统培训的好处。
1、参加培训的目的——就业
现在学习iOS的学员,可以分为三种,一种是毕业生镀金,第二种是更换行业,第三种是本行业提升。无论是以上哪种情况,最终的目的都是就业和更好的就业,所以“就业”就显得尤其重要。而参加系统培训,满足了这个必要条件。市场上很多培训机构都是推荐就业的。一般,培训机构都是有合作企业及相关渠道,可以满足学员学习通过考核后的正常就业。这就避免了,自学后,无法就业。企业选择候选人时,没有具体依据,也就失去了择人的条件,所以对于比较注重基础功底的大型企业来讲,在择人标准上会更侧重于培训后,学的比较扎实的员工,更有利于日后培养。当然,一些规模较小的公司,也有的会偏重于自学型人才,因为这样的企业没有专业人员代练新人,所以会更注重个人的自学能力。但是由于iOS不比安卓,它是不开源的,所以学习中的侧重点以及知识点的系统性就非常重要,对于喜好自学的朋友来说,要求就相对提高了。
2、门槛学习-学历要求
iOS开发学习对于整体学历还是有一定的要求的。至少要求进过大学的大专及其以上学历。这样的学员虽然不能完全理解为合格学员,但相对于初高中学生,他们有独立的逻辑性及判断性,对知识的理解能力会更强。而且多半这个学历的学员,英语也是有基础的,对于iOS编程会有很大帮助。
3、教学水平-师资、课程体系及设备提供
学习iOS的前提是有一台苹果设备,而无论对于换工作的失业人士,还是对于刚毕业的月光族学生,无疑都是一件很奢侈的事情。参加培训,专业的培训机构都会给每位学员配备一台设备。这就解决了大家学习的设备问题。而且初入iOS职场的新人,其实是没有必要花昂贵的费用买一台苹果电脑的,因为iOS就业公司,一般也会给员工配备电脑设备。另外,对于培训机构来讲,师资力量是竞争市场的最好筹码,所以对于我们学员来说,选择一个大型的、著名的培训机构很重要,一般名气比较大的培训机构,都会选择具备多年项目实战背景,多年教学经验,或者大型IT公司工作经验的资深讲师进行授课。授课过程中,会针对不同类型的学员灵活转变教学方式,以理论结合实际的方式进行讲解,与传统的高校教学进行区分,从经验出发,教授学员最好的知识,最强的技术,更适用于企业实际应用,提高学员就业率。最后,培训机构都会有一支专业的研发团队,对于当前技术热点、前沿技术、企业需求及学员特点进行研发,完善一整套课程体系,并随着市场需求,不断改进升级,保证学员学到的知识是最新最强的,这是自学远远不能达到的效果。
4、保证质量-效果跟进及评估
一个闭环的教学流程是一定有验证的,所以保证质量就显得尤为重要。在培训机构中,除了能够给予学员整天的知识输入,还为学员制定了整套的跟进计划。包括学员作业的跟进,学员项目的跟进,学员心理的辅导,简历的制作,平时答疑等等。通过各个方面,多角度对学员进行跟踪,及时跟进学员状态,进行引导。另外,每个学习阶段,都会安排系统的测试评估,评估的作用,一方面是学员的自我检测,另外一方面是通过学员阶段性学习的成绩反馈,来改进下一阶段的课程体系安排。能够实时监控学员,做到“心贴心”的服务。
二、阶段性学习方法拙见
1、注重基础知识(第一阶段-C语言、OC语言及foundation)
以C语言入门(关键字:理解、明确重点):由于现在学习iOS的学员,有些是已经在职的员工,有些是在读的大学生,还有一些是基础较差的学员。对于在职员工,我相信C语言的功底多半都是不怎么扎实的,对于在读大学生,学校的教学模式C语言和培训机构就业模式的C语言,还是有很大差异的,像计算机原理类的底层,大多数传统高校是不讲的,但是针对就业,培训机构会选择对这部分内容进行讲解。而对于零基础或基础差的,这部分知识更是欠缺。所以为了给iOS的正式学习打好夯实的基础,首先要从C语言开始。逐步递增,逐步深入的学习。另外,C语言是一门语言基础,因具备简洁、灵活的特点而广泛被应用,在多种开发环境中都起着重要的作用。在iOS开发中,会经常使用C语言和汇编语言,而汇编语言相对而言生涩繁琐,C语言因此成了程序员入门的首选语言。而学会了基本的gcc编译器,数据类型,变量常量,结构,联合枚举,C标准库等知识后,又为今后的C、C++、嵌入式等语言学习打下了基础,未来工作中,可能会涉及到的内容是不定的,这种基础打好了,更有利于灵活应对各种开发工作,做一名出色的软件工程师。
OC基础掌握(关键字:掌握核心、提升逻辑):学习任何一门语言,入门都需要一个过程。OC属于面向对象的C语言,它具有动态性,OC的动态性让程序可以在运行时判断其该有的行为,而不是像C等一些语言一样在编译构建时就确定下来,它使用动态类型(如id类型)动态类型属于弱类型,在运行时决定接收者。动态绑定,让代码在运行时判断需要调用什么方法,而不是在编译时。方法调用和代码并没有在编译时连接在一起,而是在消息发送时才进行连接,运行时决定调用的方法。还有动态载入,让程序在运行时添加代码块及其他资源,用户可以根据需要加载一些可执行代码和资源,而不是在启动时就加载所有组件。可执行代码中可以含有和程序运行时整合的新类。OC中对象永远是用指针来引用。OC除了其自有的基本语法外,内存管理和设计模式(代理模式)尤其重要,也是整个OC学习中的难点。对于OC的学习,建议一定要从理解出发,在理解的基础上进行记忆,深入理解后,开发起来才能水到渠成。
Foundation框架学习(关键字:多练习、多记忆):foundation框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,它包含对象集合,如数组、字典、集合,其他功能包括内存管理、处理基础文件系统、存储对象等。学习了它的基础语法,才能慢慢深入了解foundation的独特之处。对于框架来讲,就如同牛顿曾讲过的,“我正是站在巨人的肩膀上,才能有现在的成就”。如果什么都要从基础做起,那我们可能要从机器代码开始学起了,或者从更原始的代码学起,显然这是不可能的,所以作为iOS开发人员,我们要在软件开发中能够很好的利用框架的作用,这样就可以降低开发难度,提高开发质量,达到高效高质量的工作目的。这些框架都是经过前人实验考究,千锤百炼的结果。学习foundation框架中的类,最好的方法就是多练、多记。这些东西是靠平时积累的,并不是用了一次或者看几篇文章就能掌握的,只有多多练习,才能牢固掌握。
通过以上三部分内容的学习,为iOS的正式开发,打下了坚实的基础。只有基础牢固,后面才会有条不紊的进行开发。
2、注重练习及方法运用,培养开发灵感(第二阶段-UI)
学了很久的理论知识,到了UI阶段,终于能够看到界面了。还可以直接运行到你自己的苹果设备上,会有小小的成就感。这个部分开始,将是一个愉快的旅程。相对来讲,整个UI部分的学习比较轻松,知识点并不难。UI初期,要有一个心态的转变,由之前理论的东西一下到界面,虽然有些欣喜,但是也有些茫然和不知所措,这个时候,关键是要调整好心态,找到属于自己的学习方式。在初期阶段,接触到的方法和控件比较多,记住常用的即可,建议不要花大量的时间去死记硬背,有精力的朋友,应该努力去看懂API,因为这部分内容,无论是课上还是网络都会有一步一步的操作指导,甚至有图解的操作步骤。所以,这个阶段,不仅是单纯的掌握知识,还要更好的培养自学的能力,寻找问题,解决问题。另外,从UI开始,代码量明显增大很多,所以要求代码速度一定要跟上,手法不重要,速度很重要,只有手脑共用,才能跟上讲课进度。UI中期,基础的知识点基本已经掌握,那么建议有精力的学员自己探究一下其他控件或控件的其他功能,可以对一些app界面进行模仿,多模仿,多练习,适应学习新控件的能力、看看他们继承什么?看看头文件是什么?属性、方法、注释等等,这种能力及习惯是慢慢培养的,任何培训都只能做到“师傅领进门,修行在个人”。UI后期,遇到难点,也许就是界面传值了吧。这个时候会涉及到OC的知识点,是一个融会贯通的过程,一定要紧跟思路,多多练习。学习UI的方法,总结为:纯代码——xib——纯代码的过程,首先要手写代码,代码熟练后,尝试与xib进行结合,这时会提高编程速度,也能理解代码与xib的关系,但是由于xib比较简单,拖拽的东西比较多,学起来很容易,会产生一定的依赖性。当产生了依赖性之后,就很容易忽略了纯代码。所以,我们最后还是要用纯代码再进行巩固。最终,随着自身的经验积累,掌握好两种方式。
3、培养逻辑思维能力,提高整体编程思想 (第三阶段-数据网络及多线程)
学习完UI以后,我们就可以弄一些数据存储的东西,比如做一个网络图片收集,涉及到了网络连接,图片保存,线程安全和数据库等等知识,那就进入了第三个阶段,我们的数据阶段,也是iOS开发中较为重要的部分。这部分主要由数据持久化、网络请求及多线程组成,除了基本用法规则,更注重的是逻辑性和编程思想,学习这部分知识,大家会瞬间感觉压力很大。如果前两个阶段学习,没有大量的代码练习做基础,这部分很容易出局。所以最重要的方法还是增加代码量,培养手感,从而培养代码逻辑和编程思想。
4、知识积累,融会贯通(第四阶段-就业知识及项目)
第三部分结束后,你已经具备了基本的开发技能。但是若想找到一份满意的工作,似乎还有些欠缺。因为前三个阶段的知识,还只是技能性学习,没有真正的与企业进行对接。所以,朋友们若不想以“小白”的身份进入企业或被企业拒之门外,我们还要学习一些实际应用的知识,比如一些第三方框架,友盟统计、JavaScript、HTML等,需要通过项目来贯穿知识点。除此之外,还会对Swift这门新语言进行一个入门讲解,以便实际工作中会用到Swift编程。所以真正重中之重是第四部分内容,想成为一个资深程序员,想在iOS的领域走得更远,这部分内容是必不可少的。
三、学习方法总结
人要学的东西很多,要从方法上着手,提升学习效率。进入学习状态后,应该有如下特征:
1、记忆上有清晰的感觉,能够清晰的了解自己每一天掌握的新知识有多少,每一天是否有进步;
2、每天学习都要进行状态调整,当天知识当天掌握,遇到问题及时解决,多与人进行沟通,做到每一天都是新的一天;
3、学过的内容多加练习,《7遍练习法》是很有效的方法,做到温故而知新。
4、iOS程序员,一定要注重代码练习及代码量。尤其对于初学者,一定要从手指上培养编程感觉。
5、做稳定的学习计划,细化及量化到每一项内容及时间;
6、对自己提出项目要求,及项目进度要求;
7、Demo和项目中做好注释,不断循环练习,达到长时记忆;
8、主动翻看各类参考书及文档,主动学习,知识对比及汇总;