Cmb Blog

一生想做浪漫极客

iOS 多媒体-音频队列

ios-media-audioqueueservices

介绍 要在 iOS 设备上播放和录制音频,苹果推荐我们使用 AVFoundation 框架中的 AVAudioPlayer 和 AVAudioRecorder 类。虽然用法比较简单,但是不支持流式;这就意味着:在播放音频前,必须等到整个音频加载完成后,才能开始播放音频;录音时,也必须等到录音结束后,才能获取到录音数据。这给应用造成了很大的局限性。为了解决这个问题,我们就需要使用 Audio...

iOS 多媒体-录音

ios-media-avaudiorecorder

介绍 AVFoundation 中使用 AVAudioPlayer 实现音频播放功能是非常简单的。同样在 AVAudioRecorder 实现音频录制功能也是非常简单的。AVAudioRecorder 同其用于播放音频一样,构建于 Audio Queue Services 之上,是一个功能强大且代码简单易用的 Objective-C 接口。我们可以在 Mac 机器和 iOS 设备上使用这个...

iOS 多媒体-音频会话

ios-media-avaudiosession

介绍 事实上上面的播放器还存在一些问题,例如通常我们看到的播放器即使退出到后台也是可以播放的,而这个播放器如果退出到后台它会自动暂停。如果要支持后台播放需要做下面几件事情: 1.设置后台运行模式:在 plist 文件中添加 Required background modes ,并且设置 item 0=App plays audio or streams audio/video using...

iOS 多媒体-音乐

ios-media-avaudioplayer

介绍 基于 System Sound Services 的弊端,如果我们想播放比较大的音频就需要用到 AVFoundation 来实现了,AVFoundation 中使用 AVAudioPlayer 来实现音频播放,AVAudioPlayer 可以当成是一个播放器,可用它来控制进度、音量、播放速度等参数。 AVAudioPlayer 属性 说明...

iOS 多媒体-音效

ios-media-audiotoolbox

介绍 iOS 中音频播放其实可以分为 音效播放 和 音乐播放,音频播放 一般指的是很短的音频,对于这类音频不需要进行进度、循环等控制。音乐播放 一般指的是较长的音频,通常是主音频,对于这些音频的播放通常需要进行精确的控制。对应的在 iOS 中播放这两类音频分别使用 AudioToolbox 和 AVFoundation 。 音效 AudioToolbox 是一套基于 C语言 的框架,使...

load 和 initialize

load-initialize

load load 会在类或分类被添加到 runtime 时调用。并且只会被 runtime 调用一次。 如果子类没有实现,父类的 load 方法也不会被再次调用。 load 的调用顺序 链接的 framework 自己的 image C++ 静态初始化方法,具有 __attribute__(constructor) 修饰的函数 链接到你的 image 其它: ...

Swift 中类的两段式构造

swift-two-phase-initialization

两段式构造 第一阶段: 程序调用子类的某个构造器 为实例分配内存, 此时实例的内存还没有被初始化 指定构造器确保子类定义的所有实例存储属性都已被赋初值 指定构造器将调用父类的构造器, 完成父类定义的实例存储属性的初始化 沿着调用父类构造器的构造器链一直往上执行, 直到到达构造器链的最顶部 第二阶段: 沿着继承树往下, 构造器此时可以修改实例属性和访问se...

iOS 中静态链接库的使用

how-to-use-static-library-in-ios

什么是编译库 与 Java , .net 一样,objc 中也是有编译库的概念,主要用于 SDK (如百度地图SDK),库是编译后的二进制文件,主要是开发一些接口给开发者使用,而这种接口的实现却不能暴露的场景。 编译库的分类 静态库: .a 文件:纯二进制文件,需要配合 .h 文件一起使用,通过 .h 文件引用库里面的内容 .framework 文...

iOS 性能调优

ios-performance-optimization

影响 APP 的底层机制,主要是 CPU , GPU 的占用率和内存的使用率, APP 主线程在 CPU 中,计算显示内容,比如视图的创建,布局,图片解码,文件绘制等,计算完这些东西后交给 GPU 把结果提交到帧缓冲区去,等待下一次 垂直 信号到来时显示到屏幕上。由于垂直同步的机制,如果在一个 VSync 时间内,CPU 或者 GPU 没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再...

聊聊「物联网云平台IoT」—— 行业与战略

聊聊物联网云平台行业与老东家的产品思路

本篇为该系列第一篇 —— 行业与战略,让我们聊聊行业、战略与格局。 #前言 近几年,互联网产品从线上斗到了线下,互联网行业和传统行业的跨界融合屡见不鲜,“渗透传统行业”几乎成为了全行业下一轮创新的标配,2015年的新词“互联网+”也应运而生: 将互联网行业的生产要素,深度融入经济、社会等各个领域,尝试改变一些传统的实体经济行业,创造出新的产品形态、商业模式和生态 其实...