资讯专栏INFORMATION COLUMN

iOS开发学习路线

ctriptech / 2359人阅读

摘要:开发学习路线前言这里筑梦师是一名正在努力学习的开发工程师目前致力于全栈方向的学习希望可以和大家一起交流技术共同进步用简书记录下自己的学习历程个人学习方法分享本文阅读建议一定要辩证的看待本文本文主要是本人对开发经验中总结的知识点本文所有观点仅

iOS开发学习路线 前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
本文阅读建议
1.一定要辩证的看待本文.
2.本文主要是本人对iOS开发经验中总结的知识点
3.本文所有观点仅代表本人.
4.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.
5.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.
6.觉得哪里不妥请在评论留下建议~
7.觉得还行的话就点个小心心鼓励下我吧~

目录
1.对本职业看法
2.学习方法
3.职业规划
4.iOS开发学习路线
5.iOS基础知识点
6.iOS中级知识点
7.iOS高级知识点
8.官方Kit

对本职业看法

16年我尝试加入各种iOS开发交流群,群里的气氛大致就是:学什么iOS,iOS完了,OC完了.群里大致三种人:谁有企业开发证书,马甲包了解一下,iOS某网课推广.至今,大部分iOS开发群还都是仅供吹水用,偶尔能碰见几个好心人解决一下问题.


个人观点

个人观点:iOS开发这个职业,不是别人说完就完的,那些说完了的人都是因为技术菜,没有权威性,不想想自己为什么菜,为什么没有和唐巧王巍在一个高度,因为菜.

还没有到达一个高度就轻易否定一个职业,注定被这个职业淘汰.

所以,无视掉这种人这么荒谬的观点,那些真正有技术,懂得学习的iOS高级开发工程师,现在正在各大企业(腾讯百度阿里等),一句话,不要有比上不足比下有余的态度.努力学习.

真正会学习的人,不会说iOS完了,而是想着如何提升自己,你想想,真正牛逼的人,真的只会iOS开发这一种吗?


学习方法
面对有难度的功能,不要忙着拒绝,而是挑战一下,学习更多知识.

尽量独立解决问题,而不是在遇到问题的第一想法是找人.

多学习别人开源的第三方库,能够开源的库一定有值得学习的地方,多去看别的大神的博客.

作为一个程序员,如果你停止了学习,你也必将会被这个团队淘汰.

要把学习的技能当做兴趣,而不是为了挣钱去学习,是为了学习技能而学习.

有给自己定制一个详细的职业规划和人生规划,大到5~10年,小到近3年(并且细化到月)的计划.

不要盲目的面试,要针对即将面试的工作,准备面试.

首先针对一个自己没有接触到的知识,先使用 百度谷歌等网站搜索资料.然后进行学习

这是个好东西,我劝你多用用https://developer.apple.com/s...

尝试写一个demo,对新技术进行熟悉.

如果市面上有成熟的Demo或者第三方库,下载下来进行学习.

在熟悉的过程中,遇到了任何问题,再进行百度/谷歌,学习不同人的不同看法和解决方法.


职业规划 个人观点

首先是针对iOS这个行业,找不到工作要从自身找原因,为什么自己没有大公司的工作经历,为什么大公司会把自己毙掉,因为实力不够,因为你菜,你不够强.要从自身找原因,是,培训机构一阵子培训了一堆iOS开发工程师,但你不能从特么一堆菜鸟中杀出去,你就是菜鸟,不要怨天尤人了,好好努力学习.

不要只做到鹤立鸡群,而想着怎么离开这群鸡,重归鹤群.

针对程序员行业,这是一个需要努力奋斗的行业,也许他并不需要你有多高的文凭,好的文凭可以去大公司工作,没有好的文凭,但拥有丰富的工作经验,和开源库,也会是你本人实力的体现.所以,努力学习,路是自己走出来的,原地踏步谁也救不了你.

职业规划一般分为两种,横向和纵向,程序员行业横向走项目经理提成获得分红,纵向发展成为技术经理,必要时可以自行创业


iOS开发学习路线 iOS定位

iOS定位

简介:这里的定位,仅仅代表我个人意见,仅符合本笔记如何学习从哪里开始学习,怎么去学习来说.

尚未入门

如何判断自己是否入门

是否了解Mac

是否了解Xcode

是否了解Objective-C

是否会使用UI控件.

如果上面的都不了解,那说明你还没有入门,请从iOS学习路线开始学习.

初级iOS开发

说明:作为一名初级的iOS开发,你需要具备以下技能

必备技能(全部都会的情况下查看下一项)

Xcode的使用

第三方库的灵活使用

AFN

MJRefresh

各种网站的使用

如何判断是否可以升阶

是否了解AFNetworking 的实现原理

是否了解SDAutolayout/Masonry 一种布局库的原理

是否能够处理基本的iOS崩溃原因/无法编译原因/无法上架原因?

是否拥有了一定的工作效率,稳定的工作效率.(而不是说,上面派了一个活下来,忙都忙不完,天天加班,还一堆bug)

是否能够处理第三方库引起的崩溃.

是否可以很好的融入工作环境,完成每一阶段的工作指标,而不会让自己疲惫不堪.

结论

iOS中级开发说白了,就是你学会了基本的UI界面搭建,上架,沉淀一段时间,你觉得自己还适合这门行业,还适合,还能接受 这个所谓的iOS开发工程师的行业.你就可以说是一名中级iOS开发.

这个沉淀时间 大约在1年的实际工作中,就可以完成.

如果你觉得这门行业不适合你,请仔细结合自身情况,是否转另一门计算机语言,还是彻底转行.

中级iOS开发

说明:作为一名中级的iOS开发,你需要具备以下技能

必备技能(全部都会的情况下查看下一项)

应用的内存处理

应用的推送处理

应用的模块化/单元测试

应用的第三方集成/集中化管理/稳定迭代

阅读强大的第三方源码/拥有快速上手新的第三方库的能力.

能够接受各种新功能的开发(这里是指,即使你没有做过,但是你仍然可以凭借着学习,解决任何业务需求:例如:蓝牙.AR.摄像头.硬件交互.等)

清楚明白数据的传递方式,应用与后台如何交换数据,交换数据的过程,结果,格式.

多线程的灵活使用.

各种并发事件的处理/以及界面的合理性/流畅度

设计模式的灵活使用.

如何判断是否可以升阶

结论

高级iOS开发

说明:作为一名高级的iOS开发,你需要具备以下技能(我不是高级开发,所以这里只能给你们提供建议.)

必备技能

应用的组件化/架构分层

数据结构,操作系统,计算机网络都有自己的了解和认知

Shell脚本/python/Ruby/JS 至少会一种.

***
详细学习路线

学习路线

简介
这里只简单阐述一些概念性的东西,以及学习路线规划,真正的知识请从iOS基础知识点往下开始看.

Objective-C

介绍

概念

编译原理

程序启动原理

App组成

Info.plist

.pch

打开程序

执行main函数

执行UIApplicationMain函数

初始化UIApplication(创建设置代理对象,开启事件循环)

监听系统事件

结束程序.

语法.(此处定义可能略失严谨,口头教学为主)

基础语法

对象.

属性

数据类型

方法

继承

Frame/CGRect/CGPoint和CGSize

内存(针对MRC下情况进行介绍)

ARC/MRC

弱引用/强引用

Assign,retain,copy,strong

import 和@class的区别

Xcode使用

首先是针对Xcode菜单栏,希望自己可以去翻译一下每个菜单里每项功能的英文都是什么意思,有助于自己熟悉并加深印象的使用Xcode.

熟悉Xcode的各个功能.

UIKit控件.

界面分析(下载App进行学习).

在这里推荐有兴趣的开发人员,下载并分析,AppStore中的每项分类的top50的应用,多学习大公司以及流行应用是如何开发应用的,其中流行的,新颖的开发界面的方式可以总结下来,猜想在大应用中,别的程序员是如何开发的.

界面适配

代码架构.

代码架构文章推荐:https://casatwy.com/iosying-y...

各种工具、第三方的使用.

其实每个项目的建立都大致分为:项目框架搭建,原生界面搭建,嵌入第三方库.有很多功能都会用到第三方库,大多数第三方库都是本着快速开发,完整功能实现的目的存在的.需要开发人员能够根据业务逻辑不同,选择最好最优质的第三方库进行使用.

代码封装

当使用较多第三方库后,要求开发人员学习其开发特点,以及其封装手法,运用在自己的项目上,封装自己的代码.灵活运用.

完整项目.

开发技巧

个人心得


iOS基础知识点

iOS基础知识点

如何学习iOS

刚刚入门(如何学习)

打好基础,学习OC中各种常用语法.

学习如何上架,上架会因为什么被拒,了解App上架规则.

多学习官方说明文档.

刚刚入职1年(如何稳定)

多看开源或者注明的第三方库.

收藏并阅读各种大神的博客或者论坛.

开始考虑项目中的细节优化,内存处理和耗电情况

入职3年(如何进阶)

开始涉猎不止于iOS领域中的知识,会去了解相关职位的基础知识,例如前端和后台或者服务器运维,或者项目相关知识,具体往自己的职业规划靠拢

框架的学习

苹果自带框架

第三方框架

AFNetworking

SDAutoLayout

YYKit

SDWebImage

MJRefresh

MJExtension

Bugly

Qiniu

Masonry

TZImagePickerController

Hyphenate_CN

基础UI控件

UILabel 标题栏

UIButton 按钮

UIImageView 图片视图

UITextField 文本输入框

UITextView 文本展示视图

UIProgressView 进度条

UISlider 滑动开关

UIGesture 手势

UIActivityIndicator 菊花控件

UIAlertView(iOS8废除) 警告框

UIActionSheet(iOS8废除) 操作表单

UIAlertController(iOS8出现) 警告视图控制器

UIScrollView 滚动视图

UIPageControl 页面控制器

UISearchBar 搜索框

UITableView 表视图

UICollectionView集合视图

UIWebView网页浏览器

UISwitch开关

UISegmentControl选择按钮

UIPickerView选择器

UIDatePicker日期选择器

UIToolbar工具栏

UINavigationBar通知栏

UINavigationController通知视图控制器

UITabbarController选择视图控制器

UIImagePickerController相册

UIImage图片

Xcode的使用

基础操作 状态栏

偏好设置

Xcode Source Control 源代码管理器

Xcode workSpace工作组

Xcode Scheme 计划

Xcode AutoLayout 约束

Xcode CoreData数据库

LLDB 断点调试

StoryBoard

界面预览

界面适配

内存监测

全局断点

全局搜索替换

数据存储

plist

NSKeyedArchiver

SQLite

FMDB

CoreData

NSUserDefault

沙盒存储

NSDictionary归档

App生命周期

应用生命周期

控制器生命周期

alloc

init

创建View

ViewDidLoad

ViewWillAppear

ViewDidAppear

ViewWillDisappear

视图将要消失 (做一些视图将要消失时的UI的处理)

ViewDidDisappear

视图已经消失 (做一些视图消失之后数据的处理)

viewDidDisappear销毁定时器

dealloc

didReceiveMemoryWarning

开发者账号&上架流程

文章推荐:

https://www.jianshu.com/p/660...

https://www.jianshu.com/p/7c9...

https://www.jianshu.com/p/9b9...

个人

公司

企业

常用知识

通信

NS系列

宏定义

视图层次

切换视图

深浅拷贝

对象序列化

写入文件

获取沙盒路径

翻转视图

延伸视图

九大基本数据类型

九宫格

坐标比较

UIColor 、CIColor和CGColor 之间的关系

画图

静态变量

tag值

延时执行方法

界面旋转+状态栏隐藏

plist文件

KVC/KVO

谓词NSPredicate

帧动画

AutoLayout

isKindOfClass 与 isMemberOfClass

Return/Break/Continue

Core Animation

CALayer

Quartz2D

真机调试

静态库

内存管理

iPad与iPhone的区别

响应链

异常捕捉

国际化

代码模块化

类别/扩展


中级知识点

设计模式

UIScrollView/UITableView/UICollectionView 的嵌套

动态行高

通知/代理/block

程序启动原理

触摸事件/手势

图文混编

Runtime

NSRunLoop

GCD

ReactiveCocoa开发

3DTouch

界面渲染

Charles花瓶抓包

区分模拟器/真机项目

常用知识

单例模式

多线程

网络请求

定位

源代码管理Git

真机调试

苹果内购/广告

推送/远程推送

音频/视频/二维码

Block

蓝牙/传感器

物理仿真器UIDynamic

通讯录获取


iOS高级知识点

iOS高级知识点

Socket

XMPP

加密

MD5详解

Base64加密解密

RSA非对称加密

AES对称加密

音频

基础

Core Audio

Audio Toolbox

OpenAL

AVFoundation

Speex语音聊天

AudioQueue/AudioSession

Speex简介

视频

AAC视频.H264推流

P2P传输

直播

直播的技术分析与实现

RTMP协议

RTMP直播应用与延时分析

如果做一款inke版的App

推流发布和播放RTMP

FFmpeg

基于FFmpeg的推流器

HLS流媒体传输协议(HTTP Live Streaming)

FFmpeg

ijkPlayer

算法

简介

冒泡排序

快速排序

插入排序

归并排序

二分查找

希尔排序

动态规划

堆排序


官方Kit

ARKit.

SiriKit

HealthKit

HomeKit

SearchKit

IOKit

PDFKit

CloudKit

GameplayKit

SpriteKit

SceneKit

MusicKit

ResearchKit

MapKit

StoreKit

AVKit


结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17020.html

相关文章

  • CI Weekly #8 | CI/CD 技能进阶路线

    摘要:微店技术团队公众号容器化之路这是一套以阿里云为基础,为核心,第三方服务为工具的开发测试部署流程,以及内部的代码提交,版本管理规范。如何打造安全的容器云平台对,微服务,来说都是非常好的落地实践技术。 在使用 flow.ci 进行持续集成的过程中,也许你会遇到一些小麻烦。最近我们整理了一些常见问题在 flow.ci 文档之 FAQ,希望对你有用。如果你遇到其他问题,也可以通过「在线消息」或...

    FuisonDesign 评论0 收藏0
  • 【三万粉丝终极福利】Python、C、Java三大语言学习路线和资源整理

    摘要:今天给大家带来三万粉丝三大语言学习路线和资源整理,收藏就对了。还有对数组面向对象和异常处理等。语言学习路线一基础阶段技能树掌握脚本界面编程能力数据库基本爬虫多线程多进程开发能力,可以胜任基本的开发工作。 大家好,我是辣条。 今天给大家带来三万粉丝三大语言学习路线和资源整理,收藏就对了。 目录...

    GitChat 评论0 收藏0
  • fir.im Weekly - iOS/Android 应用程序架构解析

    摘要:原文链接原文作者译文出自小鄧子的简书下拉刷新开源库分析对比家艺分析对比了上数的下拉刷新开源库,后面能会加入其它有代表性的库。廖祜秋秋百万也说道史上最强的下拉刷新类库分析,没有之一,太棒了除了下拉刷新对比分析,家艺同学还做了的源码分析。 假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 本期 fir.im Weekly 收集了关于  iOS/Android ...

    yedf 评论0 收藏0
  • Java入门请不要放弃,学习路线以及侧重点分析

    摘要:而面向搜索引擎,就是我们要及时的使用百度谷歌遇到问题无法解决,先别急着放弃,可以去网络寻找答案,你的坑大部分别人都已经走过了,大部分都可以找到合适的解决方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●众多的语言,到底哪一门才是适合我的?●我们为什么要学习Java语言呢...

    mochixuan 评论0 收藏0
  • 2019 Java 全栈工程师进阶路线图,一定要收藏

    摘要:结合我自己的经验,我整理了一份全栈工程师进阶路线图,给大家参考。乾坤大挪移第一层第一层心法,主要都是基本语法,程序设计入门,悟性高者十天半月可成,差一点的到个月也说不准。 技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面临的问题。​我...

    wangdai 评论0 收藏0

发表评论

0条评论

ctriptech

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<