美文网首页
历程总结

历程总结

作者: 进军明天 | 来源:发表于2017-09-11 22:55 被阅读30次

    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

    相关文章

      网友评论

          本文标题:历程总结

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