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