作者:Weston Hanners,原文链接,原文日期:2016-01-26
译者:ray16897188;校对: 定稿:小锅

最近我一直在帮我的几个朋友开始学习 iOS 开发,然后被问到一个开始学习需要的清单。听起来很适合为此写一篇博客。闲话少说,我给你列出来要成为一名入门级的 iOS 开发者必须掌握的知识清单(不分先后顺序)。

基本的 CS 知识

我不觉得投身开发移动应用必须得有一个计算机科学的博士学位,我认为这应该归为“加分项”那一栏,但是对数据结构和算法有一定基本的了解肯定会防止开发新手们写代码把自己写到死胡同里去。所以对新手来说,我推荐你们去看Youtube上的哈佛CS50课程,把它看做是你入门的开始,这些课程浅显易懂,还十分有意思。

Swift 还是 Objective-C

还是那个观点,你无需到达能够写这两种语言的技术性博客的水平,或者是到能够教课的程度,但是你还是至少得能用这两种中其一来编程,不用过于频繁的查看语法。API是另外一码事儿,尤其是在 iOS 中,框架每年更新,很多方法也经常被弃用。对我来说大多数工作时间开一个 Safari 页面去看 Apple 的文档并不是偶然的事情。尝试着记着所有的太让人厌烦了。要让你自己达到在没有帮助的情况下可以写类、结构体、循环、函数(类和实例)、分配变量、表达式求值的水平。

目前我们正处于一个比较奇怪的时段,这个时候招只会 Objective-C 的人还是能被接受的。Swift 还是很新,除非你进的公司里有频繁的项目更替,否则你就得基本上用 Objective-C。也就是说,有很多的公司正决定转向 Swift(我的公司就是),如果你就会 Swift 的话,找一个工作也不会特别难。重要的是要对你所选择的那个语言足够熟练,然后至少对另外一个也要熟悉到能读懂代码的程度。

框架和 API

还是和我之前说过的道理类似,我不认为你必须能对所有的 iOS API 倒背如流,但是你需要清晰的知道到哪里找起。

  • UIKit (UITableView, UIButton, UINavigationController, GestureRecognizers)

  • Interface Builder (Storyboards, Segues, and the odd .xib)

  • Foundation 类型 (NSArray, NSDictionary, NSString) 以及它们的 Swift 对应 (Array, Dictionary 和 String)HTTP API (NSURLSession, 基本的 REST API 概念, 用 NSJSONSerializatio n 做 JSON 解析)

  • Grand Central Dispatch (GCD, NSOperationQueue)

  • 数据持久化 (NSCoding, NSUserDefaults, CoreData)

  • 内存管理 (什么是循环引用,以及 ARC 的基本原理)

开发中的设计模式

模式很重要,它让你的开发变得容易、代码变得清晰。要确保你了解基本的设计模式,这些模式在 iOS 的框架中被广泛使用,你在不知道它们的情况下不大可能做出来很多东西(还有很多其他模式,但是你可以随做随学)。

  • 代理模式(大多数iOS API的主要模式,你必须理解掌握它)

  • 模型-视图-控制器模式(MVC,我并不觉得 Apple 在鼓励使用最佳 MVC 分离上做的很好,但是它也是个很重要的设计模式,如果你花时间将其合理实现的话它能帮你改进你的代码。还有,可以十分肯定的是:关于 MVC 的问题肯定会出现在任何一个 iOS 工作的面试题里。)

  • 继承(几乎所有用户界面的代码都会是某个类的子类。)

  • 单例模式(绝对会被滥用的模式...保守点儿用吧。)

熟悉开发环境

这似乎是显而易见的,但如果你还没有一台 Mac 的话,弄一台!如果你没有任何一个 iOS 设备,弄一个!如果你没有使用过或者不熟悉设备的话,为它做开发会很难。类似的是,如果你没 Mac 写代码的话也很难。我是在2009年从一台 MacBook 13'' 和第一代 iPod Touch 开始的 。用低配置的设备也是能凑合的。当时是接近$1500的投资,但是长远来看绝对值得的。

UX/UI

通常来说 UX(用户体验)和 UI(交互界面)是由设计师负责的,但是你也应该了解 Apple 的人机交互指南。你应该要了解产品原型和线框图的区别,以及在开发的过程中如何使用它们。

工具

你应该熟悉一些常见的开发工具。

  • Xcode(废话)

  • Git 版本控制(一些公司可能会用 Subversion 或者 Mercurial,但是 git 把你领进门应该是足够的。)

  • JIRA 或者 Bugzilla(基本就是 JIRA,你也是不需要成为使用它的专家,但是你应该至少把它玩个大概,第一次看见它界面的时候别怕)

  • CocoaPods(这是管理依赖性和第三方代码的工具,我还没听过哪个公司不用它)

见解

对 iOS,Swift 或甚至对某个 API 有你自己的见解能特别有效的让面试官知道你对某个知识点的了解到底有多深。这还会让我们能看到你的热情。如果你参加一个面试被问到“你觉得 Swift 如何?”,回答“我觉得,还行吧”可不是正确的答案,你可以告诉他们你对 optionals 的看法,你有多喜欢某个 feature。这里不会有太多错误的答案,重要的是你得有东西可说。

作品集

事实胜于雄辩。如果你想在面试中表现优异的话,可以把一些简单 app 合在一起(或者更好的是把它们发布在 AppStore 上)。展示出你能够独立完成一个项目的能力。我怎么推荐这点都不嫌多。GitHub 也很好,但是如果你选择这条路,面试官想测试一下你的代码的话,要尽可能让它能够轻松通过编译。

我写了篇文章介绍怎样做一个应用程序,可以点击这里看看。

结论

如果你还需要更多的入门资源,请查看我的iOS Developer Resources页面,里面我附了我开始做开发的时候觉得有用的博客和网页。

我想我要说的最后一件事就是JUST DO IT!现阶段对 iOS 开发者的需求量还是很大的,如果你想达到一个不错的技术水准,努力工作一点时间是必不可少的。这是一份有回报性的工作,能够锻炼你的工程技能和创造力。

Shia LaBeouf "Just Do It" Motivational Speech (Original Video)(01:04)

我漏掉了什么了吗?请在Twitter (@WestonHanners)上告诉我。我想把这篇文章做成新手开启他们事业所需的百科全书

另外说一下我所在的公司现在招所有技术水平的 iOS 开发者,如果你感兴趣的话点击下面的链接。

Y Media Labs Careers

告诉他们你是从我这里知道他们的。

  • 2016-01-26 更新:添加内存管理,UI/UX,MVC。添加工具小节。

  • 2016-01-27 更新:布局调整。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。

如何成为一名入门级 iOS 开发者相关推荐

  1. Bob,我要怎样才能成为一名 iOS 开发者

    本文讲的是Bob,我要怎样才能成为一名 iOS 开发者, iOS 开发虽不易,但别怕尽管上就是了. 然而这并不是我的桌面 自我驱动 我经常收到类似的邮件跟私信, "Bob,我怎样才能成为一个 ...

  2. 作为一名iOS开发者—面对音视频这个新风口应该怎样学习才能乘风而起?

    5G时代,为何各大厂纷纷杀入音视频领域?这会是新的风口吗! 随着5G开始普及加上国内外网络资费的不断下降,音视频的前景已经越来越广阔! 大家都知道,在现在的日常生活中,视频类应用占据了我们越来越多的时 ...

  3. iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?...

    **前言: ** 目前全球共有超过 7 亿台 iPhone 处于活跃状态,全球约有2000万名 iOS 开发者,这造就了 iOS 作为全球第二大移动设备平台的状态. 虽然安卓系统的全球市场占有率超过 ...

  4. ios 开发者账号申请流程 最新

    申请账号前,你需要先确认你的目的,是发布应用,iOS 开发者账号分为个人,公司,政府组织 企业  .申请后需要苹果公司审核,信息一致后可以缴费开通.时间周期大概1-2个星期.注意事项就是如果你的名称( ...

  5. 开放下载!《iOS开发者必读资讯》

    简介:对于开发者和程序员来说,对 WWDC 20 我们有哪些新发现和新思考?淘系技术客户端团队将从Swift语言.metal的变化.中间件相关的-网络技术相关.隐私适配等各个话题,来系统输出我们的关注 ...

  6. iOS 开发者必不可少的 75 个工具

    如果你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完成不同的任务. 软件开发同样如此.你可以从软件开发者如何使用工具中看出他水准如何.有经验的开发者精于使用工具.对你目前所使用的工具不断 ...

  7. 向iOS开发者介绍C++

    http://www.cocoachina.com/industry/20140415/8163.html 你已经精通了Objective-C,并且一直想学更酷的东西?看看这篇文章吧!本文将向iOS开 ...

  8. 刚开完2019WWDC 苹果就被iOS开发者们集体起诉...

    据国外媒体报道,律师事务所Hagens Berman表示,iOS开发者对苹果公司发起了集体诉讼,声称这家科技巨头凭借其App Store垄断了iOS应用市场,并故意利用其垄断地位对那些想要制作应用的开 ...

  9. iOS 开发者必不可少的 75 个工具,你都会了吗

    如果你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完成不同的任务. 软件开发同样如此.你可以从软件开发者如何使用工具中看出他水准如何.有经验的开发者精于使用工具.对你目前所使用的工具不断 ...

最新文章

  1. 从java到c_怎样快速的从 Java 转到 C ?
  2. log_pipe日志收集分析系统介绍
  3. Android性能系列-渲染篇
  4. 决定系数R2真的可靠吗?
  5. IT人员健康信号之舌苔
  6. Android之相对布局
  7. java对象内存占用情况分析
  8. Koa 中实现 chunked 数据传输
  9. aws python lambda_python – AWS Lambda发送HTTP请求
  10. 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构
  11. 华东交通大学ACM-ICPC训练基地简介
  12. hashmap 存取原理图_HashMap原理(二) 扩容机制及存取原理
  13. 第一易,唯一难,为什么它是ofo、天学网的不二选择
  14. Springboot接入阿里云物联网SDK实现控制网络继电器通断
  15. 织梦dede源码列表页调用tags标签并带链接的实现方法
  16. springboot系列(5) -- 整合 logback 彩色日志输
  17. Gerrit error:remote: ERROR: The following addresses are currently registered:XXX
  18. LabVIEW控制Arduino实现RGB调色灯(基础篇—6)
  19. LCD+TP for linux BSP
  20. Android安卓成品项目 购物商城系统源码apk

热门文章

  1. python的GUI之Tkinter的Label组件
  2. 十四、堆(Heap)
  3. java 日期的工具类_java 日期时间工具类
  4. 自动化测试|录制回放效果差异检测
  5. 接口自动化实现图片上传(selenium/RF)
  6. 基础网络和关键基础设施
  7. struts2 表单验证
  8. 如何在linux下判断web服务是否开启?
  9. ViewPager用法
  10. 盲人可以也做软件工程师,反思一下老哥