iOS开发
szk972092933
这个作者很懒,什么都没留下…
展开
-
iOS音视频播放(一)AVFoundation
系统提供AVFoundation和AVKit两个库,来支持用户实现音视频播放功能。AVKit是基于AVFoundation进行封装的,提供基本的播放界面,但是AVFoundation可以提供更多高级的功能。,使用AVPlayerController可以很方便的实现一个音视频播放器func playVideo(_ sender: UIButton) { gua...原创 2018-09-17 18:21:00 · 2089 阅读 · 0 评论 -
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 · 176 阅读 · 0 评论 -
iOS 并发编程(三)Dispatch Sources
Dispatch Sources当你与底层系统交互的时候,你必须做好那个任务将会执行大量时间的准备。调用到内核或其他系统层,与发生在你进程内的调用相比,需要昂贵的上下文切换开销。因此,许多系统库提供了异步接口来允许你的代码提交一个到系统的请求,并且在请求的处理过程中,继续处理其他事情。GCD在也是基于这个普遍行为来允许你提交请求,并使用blocks和dispatch queues来接受返回结...翻译 2019-03-29 17:47:27 · 402 阅读 · 0 评论 -
iOS并发编程(四)Migrating Away from Threads
迁移远离线程有许多方法可以调整现有的线程代码以利用Grand Central Dispatch和操作对象。虽然在所有情况下都可能无法远离线程,但在进行切换的地方,性能(以及代码的简单性)可以大大提高。具体来说,使用调度队列和操作队列而不是线程有几个优点: 它减少了应用程序为在应用程序的内存空间中存储线程堆栈而支付的内存损失。 它消除了创建和配置线程所需的代码。 它消除...翻译 2019-03-29 18:43:30 · 498 阅读 · 0 评论 -
并发编程指南(二)Dispatch Queue
Dispatch QueuesGrand Central Dispatch(GCD)调度队列是执行任务的强大工具。 通过调度队列,您可以相对于调用者异步或同步地执行任意代码块。 您可以使用调度队列执行几乎所有在单独线程上执行的任务。 调度队列的优点是它们比相应的线程代码更易于使用,并且执行这些任务的效率更高。本章介绍了调度队列,以及有关如何使用它们在应用程序中执行常规任务的信息。 如果要使...翻译 2019-03-29 11:56:25 · 936 阅读 · 1 评论 -
iOS音频开发之Audio Session
系统通过Audio Session来管理App,App之间的和设备级别的音频行为。通过设置AVAudioSession的category和mode,可以告知系统如何在你的App中使用音频;可以监听音频中断(例如来电话)和音频路由(例如插上耳机)改变的通知;可以使用设置音频的采样率,I/O缓存持续时间和音频频道数。系统默认的AudioSession有以下默认行为:1.只支持音频播放,不支持录...原创 2018-09-19 10:46:35 · 1275 阅读 · 0 评论 -
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 · 1644 阅读 · 0 评论 -
iOS音视频播放---改善用户体验
一.显示章节标记章节标记可以使用户快速的浏览你的内容,在tvOS和macOs中,如果你播放的资源文件包含章节标记,那么 AVPlayerViewController会自动显示,你也可以通过读取元数据中的章节信息来自定义章节选择界面。可以通过chapterMetadataGroupsBestMatchingPreferredLanguages:或者chapterMetadataGroupsWit...原创 2018-09-19 14:26:14 · 703 阅读 · 0 评论 -
iOS音视频开发-----流媒体
HTTP Live Streaming (HLS))是向播放应用提供媒体的理想方式。使用HLS,您可以以不同的比特率提供多个媒体流,并且您的播放客户端会随着网络带宽的变化动态选择适当的流。这可确保您始终根据用户当前的网络状况提供最优质的内容。本章介绍如何在播放应用中利用HLS的独特功能。从iOS 10开始,您可以使用AVFoundation将HTTP Live Streaming资源下载到iO...原创 2018-09-19 15:25:27 · 2621 阅读 · 0 评论 -
iOS应用电池性能优化(一) 设置任务优先级
iOS在优化电量时主要基于以下几个方面:1.减少任务量,并对任务区分优先级。2.减少网络请求,并推迟不重要的网络请求3.高效的使用图形,动画和音视频。4.优化位置服务和动作服务(GPS,陀螺仪)5.优化通知服务(本地通知和远程通知)6.减少外设交互(主要为蓝牙设备)一、首先介绍如何减少任务量和对任务进行优先级划分1.对于需要在后台执行的任务,应在后台任务完成时通知系...原创 2018-09-14 15:54:10 · 1270 阅读 · 0 评论 -
iOS开发---蓝牙实现(一)基本概念
Core Bluetooth是基于蓝牙4.0标准来实现的。在蓝牙功能的交互中,主要有两种设备,中心(Central)和外设(Peripheral)。类似于服务器-客户端架构,Peripheral实现类似于服务端的功能,主要用来提供数据,而Central实现类似于客户端的功能,用来获取外设提供的数据。Figure 1-1 Central and peripheral devices 外设...原创 2018-09-21 11:18:00 · 1170 阅读 · 0 评论 -
iOS蓝牙开发(二)在设备端实现Central角色
若想在设备上实现Central角色的功能,主要有以下步骤:1.需要创建一个 CBCentralManager 对象2.搜索周围广播的设备3.与一个外设进行连接,并探索外设提供的服务4.向外设发送读写characteristic的请求,如果有需要订阅characteristic值得更新,来跟踪数据的变化。myCentralManager = [[CBCentra...原创 2018-09-21 13:49:07 · 320 阅读 · 0 评论 -
iOS蓝牙开发(三)实现外设功能
有时我们需要将我们的设备作为外设,来为其他中心设备提供服务。需要以下步骤:1.创建一个CBPeripheralManager实例2.基于peripheral实例,创建services和characteristics实例。3.发布services和characteristics到你设备本地数据库4.广播你创建的服务5.对中心设备的读写请求做出相应,向订阅数据的中心设备发送数据更新...原创 2018-09-21 14:32:54 · 1296 阅读 · 0 评论 -
ios run loop(一) 基本概念
Run loop是线程基本组成的一部分,是一个用来调度工作和协调到来事件的事件处理循环。主要作用是当有任务到来的时候保持线程的繁忙,当没有任务可做的时候,将线程置为sleep状态。run loop的管理不是完全自动的,有时你必须让你的代码来决定在某个适当的事件启动run loop 和对到来的事件做出相应。Cocoa和Core Foundation提供了run loop 对象来帮助你配置管理线...原创 2019-08-24 11:38:41 · 195 阅读 · 0 评论