学习方法

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

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

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

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

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

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

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

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

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

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

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

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


做一个负责任的开发者

那么现在说正题,如何成为负责任的开发者?

首先要负责,对自己的项目负责。如果是自己新开的项目,要保证随时都能清晰的想到项目当中每个地方是怎么实现的,测试或者用户反馈了问题以后,能立马想到可能的错误原因。

如果是接手的项目,就要尽快去了解主要的界面和功能是如何实现的。你只有先做好自己分内的事,才有机会去顾暇别人的事。

  1. 1.保持一个良好的代码规范以及文件架构。
  2. 2.每天要给自己做一个TodoList 和一个BugList,时刻保持自己是在有效率的工作,严重的需要时间修复的bug汇报上去,小bug自己记下来偷偷修复。
  3. 3.有空时将排行榜上的应用下载排名靠前的应用,去欣赏并分析主流app的界面,功能实现,在拿到设计图时,去考虑界面的合理性,功能怎么实现最符合用户的操作习惯。
  4. 4.要有一定的协调能力,交流能力,稍微了解一点后台知识以及前端知识。
  5. 5.信念,一个不做初级iOS开发的信念。多去了解,不会被别人当小白,学多少都是自己的,至于在你去学习的时候,有人会说风言风语,这就是区别,他们活该初级,自己不会的东西,也看不惯别人去学习。所以,一定要有一个规划,按照自己正确的规划去学习,去成长,别原地踏步。

关于后台你需要懂什么呢,如何设计接口文档,接口怎么设计合理,后台拿到你请求的数据是怎么存储的,你需要的数据后台又是怎么查询给你的,请求方式什么时候用get什么时候适合post,JSON格式的数据以及XML数据又有什么好处。

关于前端你需要了解什么呢,这里大致提一下H5和app交互,比如H5怎么调你的方法,你怎么调H5的方法,数据如何传递,图片如何交给H5显示,这些都需要去了解。

有些人会觉得,我上面说的这都是废话,或者说你知道有什么用吗,又没你提意见的资格。iOS的群普遍是什么风气,就是你提出来一个建议或者意见,如果路人甲会,他就趾高气昂怼你一顿,如果他不会,他就会说,会这个又没用,懂这么多又没用什么的bulabulabula。这就是第五点。

如果你想变强,那就做点什么.


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 学习路线总结的更多相关文章

  1. iOS开发——iOS学习路线

    iOS学习路线 版权声明:欢迎转载,请贴上源地址:http://www.cnblogs.com/iCocos/(iOS梦工厂) 一:自学初步学习路线 二:高级完整学习路线 三:完整知识与能力体系 思维 ...

  2. iOS学习路线

    这个学习路线必须发布到首页候选区.这个学习路线必须发布到首页候选区.这个学习路线必须发布到首页候选区.这个学习路线必须发布到首页候选区.这个学习路线必须发布到首页候选区.这个学习路线必须发布到首页候选 ...

  3. (2018干货系列十一)最新iOS学习路线整合

    怎么学iOS iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础 ...

  4. ios学习路线—Objective-C(Runtime消息机制)

    RunTime简称运行时.就是系统在运行的时候的一些机制,其中最主要的是消息机制.对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 ).编译完成之后直接顺序执行,无任何 ...

  5. ios学习路线—Objective-C(新特性)

    1.方法顺序无关 Objective-C类由声明文件h和实现文件m组成,所有的public方法都在h文件中声明,private方法可以写在m文件中,但是在早期的编译环境中需要注意方法的顺序,例如下面的 ...

  6. ios学习路线—Objective-C(堆(heap)和栈(stack))

    Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,即release 栈由编译器管理自动释放的,在方法中(函数体)定义的变量通常是在栈内,因此如果你的变量要跨函数的话就 ...

  7. ios学习路线—Objective-C(深浅拷贝)

    在ObjC中,什么是深浅拷贝?  深浅拷贝分别指深拷贝和浅拷贝,即 mutableCopy 和 copy 方法.  copy复制一个不可变对象,而 mutableCopy 复制一个 mutable 可 ...

  8. ios学习路线—Objective-C(装箱和拆箱)

    概述 从前面的博文我们也可以看到,数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的也就是说有些NSObject的方法是无法调用的,这个时候 ...

  9. ios学习路线—Objective-C(属性修饰符)

    readonly: 此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器.或者如果你使用@synthesize关键字,也是有读取器方法被解析. ...

随机推荐

  1. 2017-2018-2 20165312 实验三《敏捷开发与XP实践》实验报告

    2017-2018-2 20165312 实验三<敏捷开发与XP实践>实验报告 一.实验内容 1.XP基础 极限编程(Extreme Programming,XP)是一种全新而快捷的软件开 ...

  2. 转wave 文件解析

    转 1 WAVE 文件格式分析 WAVE 文件作为多媒体中使用的声音波形文件格式之一,它是以RIFF(Resource Interchange File Format)格式为标准的.每个WAVE文件的 ...

  3. processjs Documentation

    Documentation   Paul Nieuwelaar edited this page on 20 Sep 2017 · 4 revisions Installation & Usa ...

  4. 黑色背景下 vs把{}括号变黑问题

    最近喜欢把VS的背景搞成黑色,据说这样可以对眼睛好一点,然后就蛋疼的碰到点击括号中的内容,括号就变黑的问题,这样黑色背景下就什么看不到了. 原因是装了番茄助手导致的,解决办法,把选中行VA Brace ...

  5. 虚拟机安装centOs+网络配置(完整说明)

    1.新建虚拟机(标准)   选择 (我以后下安装操作系统)       选择Linux 操作系统 版本为CentOS(32位)     虚拟机的名称和位置任意       磁盘容量如下即可     设 ...

  6. 解决bootstrap和easyUI部分css类冲突问题。

    今天发现bootstrap和easyui的css类重复用了一个很笨的办法解决了,这种小事网上都不好搜啊. 我先引用的bootstrap后引用的easy UI,bootstrap的会被覆盖,boot的样 ...

  7. input设置背景透明、placeholder的字体颜色及大小

    1.设置input背景透明: background:rgba(255,255,255,0.1); 前面三个参数为对应的rgb数值,第四个参数为透明度:0~1,0:透明,1:不透明: 2.设置input ...

  8. 修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题

    原文地址:https://www.cnblogs.com/jying/p/9642445.html,转载请说明出处. 最近项目需要播放视频且限制未观看部分的快进功能,找了两款js插件ckplayer和 ...

  9. ajax请求导致status为canceled(无任何回调数据)的原因

    1.故障现象 一个普通的ajax请求,请求能够到达controller,也能正常处理业务,但是ajax的回调函数为空,即没有任何状态和数据返回,使用谷歌浏览器查看请求状态如下图: 出现该错误:简单来说 ...

  10. java实现两个不同list对象合并后并排序

    工作上遇到一个要求两个不同list对象合并后并排序1.问题描述从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序.2.思路从数据库中查询到的数据放到各自list中,先遍历两 ...