历程总结

NO.1

1.播放器hud 动画有没有卡顿 ;

没遇到——    不过,我使用的CoreAnimation , 尽量不要添加阴影效果

2.uiview 的周期 :  initwithcoder    / awakfrom  / loadView / viewdidload / viewwillappear / viewwilllayoutsubviws / viewdidlayoutsubviews / viewdidappear  / viewweilldisppear / viewdiddisappear

3.自动释放池:

3.程序崩溃情况:

有集成bugly ; 收集奔溃 / 卡顿信息 ;

数组越界 / 插入了空值 nil 的 /  SEGV_ACCERR : 异常进程线程的  /

NO.2

1.kvo 底层:

基于runtime 机制 ; 底层会动态创建当前类的派生类, 重写被监听属性的 setter 方法;

在setter 方法里面, 添加  [ sefl valuewillchangefokey]  [self valuedidchangeforkey]

触发  observalueforkeypath: ofobject :  context:

项目使用: 1.画笔bacK / resume 2.视频熟悉 3.视频连线滑动

2.通知 ; 是同步 ; 只有执行完当前任务, 才会继续执行

项目使用: websocket

3.rumtime :  oc 是动态语言, 方法的调用在底层就是消息发送;

运用场景(例子): 1. 未分类添加属性  ,  2.模型解析

项目中的使用:

4.rac 原理:

5.项目亮点:

1.画笔封装: kvo监听—--状态的改变 (返回前进)

基类封装 ——  RVBaseBrush  (公用的 属性:  起点 / 终点 线宽 颜色  bezirPath  方法 子类实现: (生成传给后台的参数  getDrawArguments )  ; )-> RVFreedomBrush RVTectagleBrush RVCircleBrush RVArrowBrush

RVDrawBoard —      UIBesierPath 画线 ; drawRect:  [self setNeedDidplay] 刷帧;

touchBegain

2.视频寻帧: seek —  seekToTime:time toleranceBefore seekToTime:time toleranceBefore

视频播放器封装  :  —  controle  , layer 层 ;  hud ;

status , loadtimerange , 属性监听 ;  playbackBufferFull  rate

播放器初始化:  AVURLAsset ,  然后异步加载 loadValuesAsynchronouslyForKeys

@“playable”  — 是否可以播放; 然后做初始化  palyer , playerItem

添加时间监听 (没有用NSTimer) —  addPeriodicTimeObserverForInterval

NO.3

1.账号密码保存方式:  userdefault  , 归档 , keyChain  ;

keyChain : 保存在设备中,独立于每个App沙盒之外;

1.安全 2.即使App卸载 ,存储信息依旧存在,再次安装App,可以依旧使用

3.相同的 AppleId 开发, 可以实现多个App共享数据

2.视频退出后, 有能继续听到声音 1~3s,  要先pause

3. 不同图片,同一url; 怎么做更新; 图片MD5 校对

每次图片路径都不一样,  filter 过滤器

4.内存偏高调试:

1.静态分析 2.instrument leaks 测试

平常开发时候看下内存; 一般不会超过100M ; 播放视频时 80M ; 突然标高, 1.检查代码有没有内存泄漏

5.多线程:

GCD  / NSOperation / NSThread ;

优势:  GCD 纯c的API, 简单快捷, 直接block 里面写我们的代码 ;

用到的地方 : 返回主线程刷新UI

NSOperation :  基于GCD的封装,

NO.4

1.微信按钮实现: 事件处理

录音是一直在录的;

事件添加使用的 addTarget :  通过ControlState 判断;  UIControlEventTouchDown    UIControlEventTouchUpOutside  UIControlEventTouchUpInside    UIControlEventTouchDragExit

UIControlEventTouchDragEnter  ;

不用通过判断手指位置, 来做;

2.treeNode 遍历

3.swift 知识:

属性是否为可选类型,你可以在 weak (值可以为nil)和 unowned 之间进行选择。

4.蓝牙知识:

App < ——  CoreBluetooth 框架:  <—— 低功耗协议栈上面

1.外设peripheral:  向中心设备发送数据

2.中心设备central: 可以从外设读取数据, 也可以向外设写入数据

关键词:

广播:  外设不停的散播蓝牙信号, 中心设备可以扫描到

服务(services): 外设广播和运行的时候有服务;  即—— 一种功能,中心设备可以读取服务.

外设可以有多个服务

特征(characteristic): 服务  的一个单位, 一个服务可以有多个特征; 特征—— value ; 读取数据就是value 值;

UUID : 区分不同的服务services和特征characteristic;

5.wifi 路由

首先: 需要像苹果申请权限;

ios9之后,  NetworkExtension :  可以给系统wifi列表里的wifi 设置密码, 标签; 还可以获取总个wifi 列表

一些相关属性:

SSID : WIFI 名称      BSSID : 站点的MAC地址

signalStength : wifi 信号强度, 该值在 0 -1NO.1

1.播放器hud 动画有没有卡顿 ;

没遇到——    不过,我使用的CoreAnimation , 尽量不要添加阴影效果

2.uiview 的周期 :  initwithcoder    / awakfrom  / loadView / viewdidload / viewwillappear / viewwilllayoutsubviws / viewdidlayoutsubviews / viewdidappear  / viewweilldisppear / viewdiddisappear

3.自动释放池:

3.程序崩溃情况:

有集成bugly ; 收集奔溃 / 卡顿信息 ;

数组越界 / 插入了空值 nil 的 /  SEGV_ACCERR : 异常进程线程的  /

NO.2

1.kvo 底层:

基于runtime 机制 ; 底层会动态创建当前类的派生类, 重写被监听属性的 setter 方法;

在setter 方法里面, 添加  [ sefl valuewillchangefokey]  [self valuedidchangeforkey]

触发  observalueforkeypath: ofobject :  context:

项目使用: 1.画笔bacK / resume 2.视频熟悉 3.视频连线滑动

2.通知 ; 是同步 ; 只有执行完当前任务, 才会继续执行

项目使用: websocket

3.rumtime :  oc 是动态语言, 方法的调用在底层就是消息发送;

运用场景(例子): 1. 未分类添加属性  ,  2.模型解析

项目中的使用:

4.rac 原理:

5.项目亮点:

1.画笔封装: kvo监听—--状态的改变 (返回前进)

基类封装 ——  RVBaseBrush  (公用的 属性:  起点 / 终点 线宽 颜色  bezirPath  方法 子类实现: (生成传给后台的参数  getDrawArguments )  ; )-> RVFreedomBrush RVTectagleBrush RVCircleBrush RVArrowBrush

RVDrawBoard —      UIBesierPath 画线 ; drawRect:  [self setNeedDidplay] 刷帧;

touchBegain

2.视频寻帧: seek —  seekToTime:time toleranceBefore seekToTime:time toleranceBefore

视频播放器封装  :  —  controle  , layer 层 ;  hud ;

status , loadtimerange , 属性监听 ;  playbackBufferFull  rate

播放器初始化:  AVURLAsset ,  然后异步加载 loadValuesAsynchronouslyForKeys

@“playable”  — 是否可以播放; 然后做初始化  palyer , playerItem

添加时间监听 (没有用NSTimer) —  addPeriodicTimeObserverForInterval

NO.3

1.账号密码保存方式:  userdefault  , 归档 , keyChain  ;

keyChain : 保存在设备中,独立于每个App沙盒之外;

1.安全 2.即使App卸载 ,存储信息依旧存在,再次安装App,可以依旧使用

3.相同的 AppleId 开发, 可以实现多个App共享数据

2.视频退出后, 有能继续听到声音 1~3s,  要先pause

3. 不同图片,同一url; 怎么做更新; 图片MD5 校对

每次图片路径都不一样,  filter 过滤器

4.内存偏高调试:

1.静态分析 2.instrument leaks 测试

平常开发时候看下内存; 一般不会超过100M ; 播放视频时 80M ; 突然标高, 1.检查代码有没有内存泄漏

5.多线程:

GCD  / NSOperation / NSThread ;

优势:  GCD 纯c的API, 简单快捷, 直接block 里面写我们的代码 ;

用到的地方 : 返回主线程刷新UI

NSOperation :  基于GCD的封装,

NO.4

1.微信按钮实现: 事件处理

录音是一直在录的;

事件添加使用的 addTarget :  通过ControlState 判断;  UIControlEventTouchDown    UIControlEventTouchUpOutside  UIControlEventTouchUpInside    UIControlEventTouchDragExit

UIControlEventTouchDragEnter  ;

不用通过判断手指位置, 来做;

2.treeNode 遍历

3.swift 知识:

属性是否为可选类型,你可以在 weak (值可以为nil)和 unowned 之间进行选择。

4.蓝牙知识:

App < ——  CoreBluetooth 框架:  <—— 低功耗协议栈上面

1.外设peripheral:  向中心设备发送数据

2.中心设备central: 可以从外设读取数据, 也可以向外设写入数据

关键词:

广播:  外设不停的散播蓝牙信号, 中心设备可以扫描到

服务(services): 外设广播和运行的时候有服务;  即—— 一种功能,中心设备可以读取服务.

外设可以有多个服务

特征(characteristic): 服务  的一个单位, 一个服务可以有多个特征; 特征—— value ; 读取数据就是value 值;

UUID : 区分不同的服务services和特征characteristic;

5.wifi 路由

首先: 需要像苹果申请权限;

ios9之后,  NetworkExtension :  可以给系统wifi列表里的wifi 设置密码, 标签; 还可以获取总个wifi 列表

一些相关属性:

SSID : WIFI 名称      BSSID : 站点的MAC地址

signalStength : wifi 信号强度, 该值在 0 -1

你可能感兴趣的:(历程总结)