热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS学习入门指南

推荐阅读iOS学习之路(资料推荐)@没阳光的午后(阅读难度:★)最佳实践(2):iOS开发篇2016-09-07CocoaChina零基础小白如何进行iOS系统学习?入门后如何进阶

推荐阅读

  • iOS学习之路(资料推荐) @没阳光的午后 (阅读难度:★)
  • 最佳实践(2):iOS开发篇

2016-09-07 CocoaChina

零基础小白如何进行iOS系统学习?
入门后如何进阶,进而成为资深的iOS专家?
iOS开发者的能力图谱是怎么样的?
想要走向专家级别,需要怎样的知识体系?
网易阿里等互联网公司需要怎样的iOS人才?
……

这些问题恐怕是想要入行iOS或者初入行1-3年的开发同学经常碰到的,今天我们邀请到了网易移动技术团队负责人张平,从这五个问题的角度来为大家答疑解惑。

张平 | 网易移动技术团队负责人
多年浏览器内核、Javascript解释器研发经验;负责过多款APP和一些基础SDK的研发;热爱优秀的编程语言。

1 零基础小白如何进行iOS系统学习

首先,学习目标要明确;
其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走;
再次,学技术最重要的一点就是多动手。

推荐书目:
《Objective-C基础教程 》
《iOS编程》
《iOS开发指南》
推荐两个开源的APP:SegmentFault、

2 基础入门后,如何进行高级进阶

2.1 原理和基础:掌握扎实的原理和基础是进阶的必要条件

首先是语言。 入门时候可能只要对语言看得懂,会写即可。但是在进阶阶段,看懂会写是远远不够的

这个时候,编码规范就很重要,我们不能随心所欲的写,推荐书目《Effective Objective_C2.0》。

除此之外,我们还需熟练掌握Objective-C Runtime。我推荐的素材有objc4,这门语言比较好的是它开源,所以我们可以去看它的源码。第二是苹果的这篇文档Objective-C Runtime Programming Guide,我们可以仔细去阅读。从我自身经历来看,对Objc_msgSend实现细节的理解程度很大程度上反映了我们对 Objective-C Runtime的掌握程度。再推荐大家一篇文档 The Swift Programming Language,苹果官方的文档,大家可以反反复复去看。

2.2 iOS GUI学习

我听到有些人说GUI学习太简单了,我随便看看能刷几个页面就可。还会有这样一种说法,GUI的代码太难看了。

我个人十分重视GUI,我认为这是真正挑战的地方,因为这能真正反映我们的熟练程度,是否真正懂得其背后的设计原理。

APP Guide:
l View Programming guide
l View Controller Programming Guide
l Event Handling Guide
l Drawing and Printing Guide
l Core Animation Programming Guide

2.3 Xcode学习

工欲善其事,必先利其器。在我看来,Xcode就是这个器,因此需要十分重视。

Apple Guide:
| Xcode Overview
| Xcode Project Management Guide

关于Xcode的流程,我们需要清晰的知道Xcode编译、链接、打包的流程,配置和Xcodeconfig的操作。另外,还需知道Xcode管理多工程、多Target. 还需熟练使用cocoapods、plugin。当然,IIvm调试工具也是必不可少的。

2.4 网络

理解NSUPLConnection、NSURLSession、NSURLProtocol

Apple Guide:
| URL Loading System Programming Guide
| Introduction to CFNetwork Programming Guide

2.5 多线程

推荐书目《Objective_C高级编程ios与OS X多线程和内存管理》,这本书的特点是透彻,全面。

Apple Guide:
| Concurrency Programming Guide
| Threading Programming Guide

2.6 逆向安全(了解层面)

《iOS应用逆向工程》对我们去了解逆向这些事情和应用的保护是很有帮助的。

Apple Guide:
| Keychain Services Programming Guide

2.7 学习资源

| WWDC Session
| Objc.io
此外,优秀的开源库也值得我们学习,如:
| SDWebImage
| AFNetworking/Restkit
| Facebook的三个库:AsyncDisplayKit/pop/ReactNative
ReactiveCocoa

3 iOS能力清单

3.1 GUI

自定义UI、熟悉UI渲染机制
掌握基本排版机制,掌握AutoLayout
熟悉事件传递机制,自定义手势
掌握基本动画,动画原理

3.2 Controller

熟悉基本ViewController使用、transition
熟悉MVC等设计模式

3.3 熟悉常见网络库使用

熟悉NSURLConnection, NSURLSession, NSURLProtocol, AFNetworking, 熟悉Cache, COOKIE管理

3.4 熟悉Sqlite使用,熟悉常见ORM系统设计和实现,熟悉系统常用本地存储机制

熟悉CoreData, sqlite, UserDefault

3.5 熟悉多线程消息传递,同步机制,线程池设计和实现

掌握NSOperation GCD Runloop 机制和实现

3.6 熟悉音频、视频基本概念,熟悉相关系统接口

熟悉拍照、录像等相关接口

3.7 编程语言

熟悉C/C++、Objective-C、Swift

3.8 性能优调

熟悉移动端常见性能问题和解决方案:主线程CPU密集操作,主线程IO操作,排版、渲染耗时
网络性能分析和调优(《Web性能权威指南》)
熟练使用Instrument进行性能调优

3.9 安全

熟悉常见iOS应用安全机制(keychain,codesign),熟悉常见应用数据保护机制
熟悉常见加解密算法
熟悉iOS逆向与安全

4 走向专家的知识体系

内功而非招式,更看重基础的掌握。 所以,我们需要加强自身实际的能力,主要包括:
l 数学基础
l 操作系统
l 程序的编译上,链接与加载,推荐《程序员的自我修养》
l ARM体系架构,推荐ARM体系结构与编程》
l 学习多范式的编程语言
l 设计模式
l 计算机网络
l 数据库

5 企业需要怎样的iOS人才

| 大公司更看重基础,成长性
| 技术热情
| 系统学习的能力
| 听说能力
| 敢于承担、敢于挑战


推荐阅读
  • 我的iOS开发入门自学路径
    我有一个清单,列着希望在大学里完成的事。比如,学一门乐器,和朋友去旅游,搭建自己的博客,去滑翔,看各主题的书籍。其中一项是,写自己的App并且上架。去年开始,我准备完成这一项,所以 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了iOS开发--漫谈内存管理相关的知识,希望对你有一定的参考价值。 ... [详细]
  • TIOBE 2012年2月编程语言排行榜:C#力压C++
    TIOBE2012年2月编程语言排行榜已经发布,本月C#挤进前三,占领季军位置,C降至第四名。VisualBasic惨遭冷谈, ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • iOS Xcode汇编模式切换的方法介绍
    一、概念 1.汇编指令:模拟器上运行的是Intel指令,而真机上运行的是arm指令, 2.每条汇编指令的格式总是由: 操作码,操作 ... [详细]
  • iOS逆向工程(三):利用Cycript调试App
    利用Cycript调试App一、Cycript是什么?Cycript是一种脚本语言,是Ob ... [详细]
  • iOS开发Debug和Release的理解
    2019独角兽企业重金招聘Python工程师标准参考:http:blog.csdn.netmad1989articledetails406580331&# ... [详细]
  • iOS推送手机消息的技术背后的奥秘揭示
    作者:allenzzhao,腾讯IEG运营开发工程师消息推送我们几乎每天都会用到,但你知道iOS中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送, ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了预加载多个本地WebView相关的知识,希望对你有一定的参考价值。 ... [详细]
  • ObjectiveC与Swift之间的互相调用和跳转
    Objective-C与Swift之间的互相调用和跳转-一、OC和Swift互相跳转首先在需要引入Swift的文件中导入头文件#import工程名-Swift.hOC跳转Swift ... [详细]
  • iOS App申请证书与发布流程
    今天刚好客户定制的APP需要上架,也提供了新的开发者账号,所以就顺带把申请证书与发布流程写一遍。证书是什么?上面这个就是我们申请好证书后 ... [详细]
author-avatar
honey爱一个人好难
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有