- 博客(22)
- 收藏
- 关注
原创 ios run loop(一) 基本概念
Run loop是线程基本组成的一部分,是一个用来调度工作和协调到来事件的事件处理循环。主要作用是当有任务到来的时候保持线程的繁忙,当没有任务可做的时候,将线程置为sleep状态。run loop的管理不是完全自动的,有时你必须让你的代码来决定在某个适当的事件启动run loop 和对到来的事件做出相应。Cocoa和Core Foundation提供了run loop 对象来帮助你配置管理线...
2019-08-24 11:38:41 211
原创 React-Native 常见报错
1.升级到Xcode10,运行react-native run-ios报错 Could not find iPhone X simulator提示运行react-native run-ios --verbose命令找到报错文件node_modules/@react-native-community/cli/build/commands/runIOS/findMatchingSimulato...
2019-06-26 11:03:36 565
翻译 iOS并发编程(四)Migrating Away from Threads
迁移远离线程有许多方法可以调整现有的线程代码以利用Grand Central Dispatch和操作对象。虽然在所有情况下都可能无法远离线程,但在进行切换的地方,性能(以及代码的简单性)可以大大提高。具体来说,使用调度队列和操作队列而不是线程有几个优点: 它减少了应用程序为在应用程序的内存空间中存储线程堆栈而支付的内存损失。 它消除了创建和配置线程所需的代码。 它消除...
2019-03-29 18:43:30 529
翻译 iOS 并发编程(三)Dispatch Sources
Dispatch Sources当你与底层系统交互的时候,你必须做好那个任务将会执行大量时间的准备。调用到内核或其他系统层,与发生在你进程内的调用相比,需要昂贵的上下文切换开销。因此,许多系统库提供了异步接口来允许你的代码提交一个到系统的请求,并且在请求的处理过程中,继续处理其他事情。GCD在也是基于这个普遍行为来允许你提交请求,并使用blocks和dispatch queues来接受返回结...
2019-03-29 17:47:27 426
翻译 并发编程指南(二)Dispatch Queue
Dispatch QueuesGrand Central Dispatch(GCD)调度队列是执行任务的强大工具。 通过调度队列,您可以相对于调用者异步或同步地执行任意代码块。 您可以使用调度队列执行几乎所有在单独线程上执行的任务。 调度队列的优点是它们比相应的线程代码更易于使用,并且执行这些任务的效率更高。本章介绍了调度队列,以及有关如何使用它们在应用程序中执行常规任务的信息。 如果要使...
2019-03-29 11:56:25 962 1
原创 iOS 属性特征
OC中在用property声明属性时,可以使用的修饰特征如下:atomic,nonatomic,strong,weak,readwrite,readonly,getter= ,setter=copy, assign, retain,unsafe_unretained如果我们自己实现getter/setter方法,那么 atomic/nonatomic/retain/assi...
2019-02-28 18:37:14 190
原创 iOS蓝牙开发(三)实现外设功能
有时我们需要将我们的设备作为外设,来为其他中心设备提供服务。需要以下步骤:1.创建一个CBPeripheralManager实例2.基于peripheral实例,创建services和characteristics实例。3.发布services和characteristics到你设备本地数据库4.广播你创建的服务5.对中心设备的读写请求做出相应,向订阅数据的中心设备发送数据更新...
2018-09-21 14:32:54 1322
原创 iOS蓝牙开发(二)在设备端实现Central角色
若想在设备上实现Central角色的功能,主要有以下步骤:1.需要创建一个 CBCentralManager 对象2.搜索周围广播的设备3.与一个外设进行连接,并探索外设提供的服务4.向外设发送读写characteristic的请求,如果有需要订阅characteristic值得更新,来跟踪数据的变化。myCentralManager = [[CBCentra...
2018-09-21 13:49:07 342
原创 iOS开发---蓝牙实现(一)基本概念
Core Bluetooth是基于蓝牙4.0标准来实现的。在蓝牙功能的交互中,主要有两种设备,中心(Central)和外设(Peripheral)。类似于服务器-客户端架构,Peripheral实现类似于服务端的功能,主要用来提供数据,而Central实现类似于客户端的功能,用来获取外设提供的数据。Figure 1-1 Central and peripheral devices 外设...
2018-09-21 11:18:00 1183
原创 iOS音视频开发-----流媒体
HTTP Live Streaming (HLS))是向播放应用提供媒体的理想方式。使用HLS,您可以以不同的比特率提供多个媒体流,并且您的播放客户端会随着网络带宽的变化动态选择适当的流。这可确保您始终根据用户当前的网络状况提供最优质的内容。本章介绍如何在播放应用中利用HLS的独特功能。从iOS 10开始,您可以使用AVFoundation将HTTP Live Streaming资源下载到iO...
2018-09-19 15:25:27 2653
原创 iOS音视频播放---改善用户体验
一.显示章节标记章节标记可以使用户快速的浏览你的内容,在tvOS和macOs中,如果你播放的资源文件包含章节标记,那么 AVPlayerViewController会自动显示,你也可以通过读取元数据中的章节信息来自定义章节选择界面。可以通过chapterMetadataGroupsBestMatchingPreferredLanguages:或者chapterMetadataGroupsWit...
2018-09-19 14:26:14 731
原创 iOS音视频开发 PictureInPicture
Picture in Picture (PiP)在是iOS9新添加的功能,允许iPad用户在悬浮小窗口播放视频。效果如下Figure 4-1 PiP in Action 你可以使用AVKit framework的AVPlayerViewController类来实现,或者如果自定义了播放器,使用AVPictureInPictureController来实现。在使用AVPlayerVie...
2018-09-19 11:46:01 1683
原创 iOS音频开发之Audio Session
系统通过Audio Session来管理App,App之间的和设备级别的音频行为。通过设置AVAudioSession的category和mode,可以告知系统如何在你的App中使用音频;可以监听音频中断(例如来电话)和音频路由(例如插上耳机)改变的通知;可以使用设置音频的采样率,I/O缓存持续时间和音频频道数。系统默认的AudioSession有以下默认行为:1.只支持音频播放,不支持录...
2018-09-19 10:46:35 1377
原创 iOS音视频播放(一)AVFoundation
系统提供AVFoundation和AVKit两个库,来支持用户实现音视频播放功能。AVKit是基于AVFoundation进行封装的,提供基本的播放界面,但是AVFoundation可以提供更多高级的功能。,使用AVPlayerController可以很方便的实现一个音视频播放器func playVideo(_ sender: UIButton) { gua...
2018-09-17 18:21:00 2118
原创 iOS应用电池性能优化(一) 设置任务优先级
iOS在优化电量时主要基于以下几个方面:1.减少任务量,并对任务区分优先级。2.减少网络请求,并推迟不重要的网络请求3.高效的使用图形,动画和音视频。4.优化位置服务和动作服务(GPS,陀螺仪)5.优化通知服务(本地通知和远程通知)6.减少外设交互(主要为蓝牙设备)一、首先介绍如何减少任务量和对任务进行优先级划分1.对于需要在后台执行的任务,应在后台任务完成时通知系...
2018-09-14 15:54:10 1306
原创 React-Native Text,TextInput控件常见问题及解决方案
1.在使用React-Navtive<Text>标签时,有时会出现一行内容显示不开的情形,此时需要Text的高度随着文字内容的增加,而增加。<View style={styles.flexRow}> <Text style={styles.text}>啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦 啦啦啦啦啦啦啦啦啦啦啦啦...
2018-09-13 13:50:40 7627
原创 计算机图形学——光照模型
光线照到物体表面发生三种情况:反射、投射、吸收转换为热能。只有反射光和投射光能够刺激眼睛产生颜色,因而物体表面的反射光和投射光决定了物体呈现的颜色。一、光照明模型 目的:产生明暗过度自然的真实感图形。 概念:描述了物体表面的颜色与其空间位置、朝向、物理属性(反射率、折射率)及光源之间的关系。二、发展历程 1.早期光照明模型基于经验,只能反映光源直接照射的情况。 2.比较精...
2018-04-11 22:28:40 8764 1
原创 计算机图形学——纹理映射
一、模拟物体表面细节 纹理映射的引入?光照明模型只能生成光滑的物体表面。纹理映射用来模拟物体表面细节,使生成的图形更加自然、逼真。 物体表面细节分为两类:1.表面的颜色纹理 如桌上的木纹,墙上贴的图画 。颜色纹理取决于物体表面的光学属性(折射率,反色率)2.表面的几何纹理,如凹凸不平的树皮,几何纹理由物体表面的微观几何形状决定。二、摸拟物体表面细节的方法 1.表面细节多边形:对...
2018-04-10 22:26:11 9343 1
原创 结构化设计基本概念
一、模块?模块化? 模块:是执行一个特殊任务的一组例程以及相关的数据结构。通常分为两部分:一部分是接口,给出可由其它模块或里程访问的常量、变量、函数等。另一部分是模块体,是接口的实现。 模块化设计两个主要问题:1.如何将系统分解成软件模块,2.如何设计模块。 模块化:把一个待开发的软件分解成若干简单的、具有高内聚低耦合的模块。二、耦合?耦合类型?产生耦合的因素? 耦合是对不...
2018-04-02 21:38:02 5158
原创 软件需求与软件需求规约基本概念
一.需求分析:通过分析分配给软件的那些系统需求,确定软件需求。是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程二.需求及需求的基本性质?需求:是一个“要予构造”的陈述,描述了待开发产品功能上的能力、性质参数或者其他性质。性质:1.必要的,即该需求是用户所要求的。 2.无歧义的...
2018-03-13 23:00:16 7991
原创 浅谈kvo
关于kvo即Key-Value Observing ,下面记下读官方文档https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html的个人总结,一方面希望能够加深对kvo的了解的,另一方面能够和大家一起讨论,如有错误,请留言指正,
2017-11-30 22:41:41 189
原创 浅谈KVC
看了一遍官方文档关于kvc的介绍,总结一下,如有不对之处,请各位朋友能够指正,万分感谢。原文地址https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding。kvc是NSKeyValueCoding非正式协议(Category)所提供的用来一种用来间接读取设置属性(基...
2017-11-27 22:47:03 215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人