历程总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,794评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 什么是爱情 是牵手走过的雪地 连脚印都依偎在一起
    眠辞阅读 206评论 0 0
  • 9.21下午,余杭项目结束,赶赴下一个目的地萧山的间隙,我们来到了杭州市市民中心。杭州G20峰会时,杭州市市...
    冀泰来阅读 4,019评论 4 3
  • 因为工作调动关系,我打算在中国内陆二线城市南昌租个单间或者一室一厅。因为只有半年的时间,而且公司在南昌开拓市场,平...
    凭轩听雨fiona阅读 264评论 0 1