美文网首页
iOS开发学习路线(转:筑梦师Winston)

iOS开发学习路线(转:筑梦师Winston)

作者: 一个记事本 | 来源:发表于2018-04-23 13:59 被阅读142次

    iOS开发学习路线(转:筑梦师Winston https://www.jianshu.com/p/19265c17f99b

    前言

    这里筑梦师,是一名正在努力学习的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的应用,多学习大公司以及流行应用是如何开发应用的,其中流行的,新颖的开发界面的方式可以总结下来,猜想在大应用中,别的程序员是如何开发的.
        • 界面适配
      • 代码架构.

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

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

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

      • 开发技巧

      • 个人心得


    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

      • 开发者账号&上架流程

      • 常用知识

        • 通信
        • 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

    相关文章

      网友评论

          本文标题:iOS开发学习路线(转:筑梦师Winston)

          本文链接:https://www.haomeiwen.com/subject/dyxllftx.html