1
零基础小白如何进行 iOS 系统学习
首先,学习目标要明确;
其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走;
再次,学技术最重要的一点就是多动手。 推荐书目:
《Objective-C 基础教程》
《iOS 编程》
《iOS 开发指南》
推荐两个开源的 APP:SegmentFault、懒人笔记 2
基础入门后,如何进行高级进阶
2.1 原理和基础:掌握扎实的原理和基础是进阶的必要条件 首先是语言。入门时候可能只要对语言看得懂,会写即可。但是在进阶阶段,看懂会写是远远不够的。 这个时候,编码规范就很重要,我们不能随心所欲的写,推荐书目《Effective Objective-C2.0》。 除此之外,我们还需熟练掌握Objective-C Runtime。我推荐的素材有http://opensource.apple.com/source/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 学习入门指南(含书目/文档/学习资料)的更多相关文章

  1. EasyUI文档学习心得

    概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...

  2. 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)(1)

    原文:http://developer.51cto.com/art/201501/464174.htm 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定 ...

  3. SpringBoot学习笔记:Swagger实现文档管理

    SpringBoot学习笔记:Swagger实现文档管理 Swagger Swagger是一个规范且完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.Swagger的目标是对RE ...

  4. Spring文档学习

    Spring文档学习 参考Spring Framework Documentation学习 1. IoC 容器 1.1 容器实例化 <beans> <import resource= ...

  5. 《MATLAB从入门到放弃》二维曲线和图形绘制基础(二):使用Help文档学习line、plot、plotyy、subplot、hold绘图函数

    目录: »  plot 最常用的二维曲线绘图函数 >  帮助文档 >  基本使用语法 >  线条的样式.符号和颜色调整 >  图形属性调整 >  使用图形句柄进行设置 » ...

  6. Cassandra1.2文档学习解读计划——为自己鼓劲

    最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...

  7. AngularJS1.X学习笔记14-动画(解读文档)

    最近在看算法分析,那个大O啊,小o啊,分治法啊(目前就看到这里),真是搞死了.这回呢休息一下,学学AngularJS动画,上一篇文章根据自由男人的书简单谈到了动画的话题,发现反响很大(好吧,我说慌了, ...

  8. <文档学习>AirSim/using_car.md Choosing Your Vehicle: Car or Multirotor

    如何在AirSim中使用汽车 默认情况下,AirSim中使用的车型为多转子multirotor. 如果你想使用汽车,那么只需在你的settings.json(https://github.com/Mi ...

  9. 10LaTeX学习系列之---Latex的文档结构

    目录 目录 前言 (一)对于Ctex宏包中的文档结构 1.说明 2.源代码 3.输出效果 4.技巧 (二)对于ctexart的文档结构 1.说明 2.源代码 3.输出效果 (三)对于ctexbook的 ...

随机推荐

  1. SQL Server DDL触发器

    DDL 触发器作用: DDL 触发器主要用于防止对数据库架构.视图.表.存储过程等进行的某些修改. DDL 触发器事件: DDL 触发器在创建用来监视并响应该数据库或服务器实例中的活动的事件通知时,可 ...

  2. 基于Python操作redis介绍

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 毕业前的最后一个学期(2016.03),龙哥结婚了.可是总有些人喜欢嘲笑别人,调侃我.当时我就理直气壮的告诉他们,等龙哥孩子 ...

  3. Shape-in​​side css新属性 几何图形的实现

    https://www.w3cplus.com/css3/css-shapes-101.html

  4. C/C++:函数的编译方式与调用约定以及extern “C”的使用

    转自:https://www.cnblogs.com/qinfengxiaoyue/archive/2013/02/04/2891908.html 函数在C++编译方式与C编译方式下的主要不同在于:由 ...

  5. Python面试题之Python迭代器

    要理解迭代器,首先要从字面意思来说. 迭代 重复 下一次重复基于上一次的结果 软件开发就是典型的迭代更新. 讲迭代,我们就先来模拟一下迭代: 现在让我们使用while循环来遍历出一个列表list1 = ...

  6. react-refetch的使用小例子

    出处:<react设计模式和最佳实践> 作者:米凯莱·贝尔托利 出版时间:2018年8月第1版(还算新) 使用react-refetch来简化api获取数据的代码 const List = ...

  7. [Linux 006]——grep和正则表达式

    在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...

  8. spring定时器(注解的形式)

    最近有个需求,要在凌晨的时候,根据某几张表生成一张定时任务表里的数据,数据的状态为0(未整改),然后在当天晚上,再把这些数据的状态没改变的,改变状态为1(待整改),然后要用到定时器,百度了一下用注解形 ...

  9. java直接计算一个算术题

    import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptE ...

  10. .Net Core Linux部署之进程守护 Supervisor 安装配置

    1.Supervisor 安装 //安装easy_install yum install python-setuptools //安装Supervisor easy_install superviso ...