最近,我在帮我的一些朋友开始学习iOS开发,他们要求我列出一些入门iOS开发所需要了解的内容清单。这对于一篇博客来说似乎是一个不错的主题。我没有费过多的精力就整理出来一个清单,以此向大家介绍要成为一个入门级iOS开发者,你需要知道这些东西(以下顺序不分先后)。

基础计算机知识

我认为获得一个计算机科学博士学位并不是上手移动应用开发的必要条件,它应该被归在“绝对有帮助”的一类,至少掌握了基础数据结构和算法能让新手开发者防止被自己的代码绕进去。因此,对于初学者而言,我会推荐大家用在YouTube上自学哈佛CS50课程的方法来作为开始,这些课程很容易让初学者跟上进度而且看起来也十分有趣。

Swift还是Objective-C?

当然,我没有说你必须对这两门语言的认识要达到能够写博客或者教课的程度,但你至少应该能够在不经常查阅语法的前提下用其中至少一种语言来写代码。API是一个难题,尤其是在iOS中,框架每年都在更新,方法经常被废弃。对我来说在Safari标签中放入Apple Documentation以便工作中查阅是习以为常的事情。API的东西多到难以记住全部内容。你只需要能够在不用任何外界帮助下写一些类、结构体、循环、函数(类方法和实例方法),分配变量和评估表达式。

如今我们处在一个很奇特的时代,雇用只懂Objective-C的人也是能够被接受的。Swift还很年轻,除非你被一家拥有很多项目流通的公司所聘用,否则你仍旧会在大部分时间使用Objective-C做开发。尽管如此,还是有很多公司愿意冒险使用Swift(包括我在职的这家),而且我觉得就算你只会Swift,找到一份工作也不会太困难。我想说,关键是你要精于你所选择的语言,并对另一门语言的了解至少是能够到看得懂代码的程度。

框架和API

正如我之前说的那样,我认为没有必要记住iOS所有的API,但你应该有一个好的切入点。

  • UIKit(UITableView、UIButton、UINavigationController以及GestureRecognizers)
  • Interface Builder(Storyboards、Segues和奇怪的.xib)
  • 基本数据类型(NSArray、NSDictionary以及NSString),与之对应的Swift中的类型(Array、Dictionary 和 String),HTTP API (NSURLSession, 基本的 REST API 概念, 用NSJSONSerialization解析处理JSON)
  • Grand Central Dispatch(GCD、NSOperationQueue)
  • 持久化(NSCoding、NSUserDefaults和CoreData)
  • 内存管理(什么是 循环引用 以及 ARC 基础)

开发模式

模式很重要,它能让开发更轻松,并让你的代码更整洁。确保你了解那些最基本的模式,它们在iOS框架中被广泛使用,不了解这些你很难在开发中施展拳脚(还有很多其他的模式,但这些可以作为你初学iOS开发的起点)。

  • 代理(这是很多iOS的API会涉及到的,你必须清楚地理解它)
  • Model View Controller (我不认为Apple在鼓励使用最好的MVC分离上做的足够出色,但如果你花时间正确实践它,它会是一个能帮助你提升代码质量的重要模式。同样,基本上都会出现在任何面试问题的列表里。)
  • Subclassing(几乎所有用户接口都是某个类的子类)
  • 单例(这个模式绝对被滥用了……请有节制地使用)

熟悉开发环境

这看起来像是显而易见的,如果你没有Mac电脑,去买一台!如果你没有iOS设备,去买一台!如果你没有使用过或者不熟悉一个设备却在为它做开发,这会变得相当困难。同样地,没有Mac电脑来做开发也会很困难。我的第一台Mac设备是2009款的13寸MacBook Pro配上第一代iPod Touch。从低端设备入手是非常合适的。我在这两个设备上投入了将近1500刀,但从长期看来这个价格确实是值得的。

UX/UI

通常来说,UX和UI是设计师负责的内容,但是你也应该了解Apple人机界面指南。你需要知道原型和线框图之间的区别,并在开发过程中使用他们。

工具

你应该熟练掌握一些常用的开发工具

  • Xcode(必须的)
  • Git Source Control (一些公司可能使用的是Subversion或者Mercurial,但git对于你入门来说足够了。)
  • JIRA 或 Bugzilla(以JIRA为例,你不需要成为使用它的专家,但你至少要熟练到不像第一次接触它时那么恐惧。)
  • CocoaPods(这是一个用来管理依赖和第三方代码的工具,我从未听说有不使用这个的公司。)(这是一个用来管理相关性和第三方代码的工具,我从未听说过有不使用这个的公司。)

主见

对iOS、Swift甚至一个特定的API持有自己的观点是一个很好的给面试官了解你对某个开发主题理解深度的方式。这也能让我们看到你的学习热情。如果你在一场面试中被问到:“你是如何看待Swift的?”回答“还不错”并不是正确的回答,你应该告诉他们你对所有可选选项的态度,你是如何使用一个新语言特性的。这里并没有列举出许多错误的回答,最重要的是要言而有物。

作品集

行动比言语更响亮。如果你真的很注重一场面试,就提前把你的一些简单的app整理在一起(如果能在App Store中启动它们就更好了)。展示你有独立完成一个项目的能力会让你的话语更有分量。这是我极力推荐的方式。GitHub也是一个很好的平台,但如果你要展示你的GitHub,就尽量让你的代码对于那些想测试一下的面试官来说能够简单些。

总结

如果你想要更多的资料来帮助你迈出第一步,可以查看我的iOS开发者资源,我在里面链接了我学习iOS开发的时候感觉很有用的一些博客和文章。

最后再加上的一点就是 JUST DO IT!当下iOS开发者需求量很高,如果你能让你的技能达到一个不错的水平,你肯定不会长期处于失业状态。这是一份很有意义的工作,它能让你磨练工程技能和创造力。

余下全文(1/3)

本文最初发表在www.evget.com,文章内容属作者个人观点,不代表本站立场。

分享这篇文章:

请关注我们:

发表评论

电子邮件地址不会被公开。 必填项已用*标注