AVAudioPlayer 如何在页面呈现之后按需初始化
在页面中按需初始化 AVAudioPlayer
很多时候我们需要根据页面上内容的情况创建 AVAudioPlayer 对象,已达到降低无谓资源占用等目的。下面我们来看一段代码看起来正确的代码:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var error: NSError?
let player = AVAudioPlayer(data: NSData(contentsOfURL: NSURL(string: "https://dl.django.t.taobao.com/rest/1.0/file?acl=5222dc2f6b41f20dae409a7743dc04fb&cID=40001&fileIds=ytQkYL66QaOs_6tYGSRHQQAAAA8AAQIC&name=13-1.mp3×tamp=1426953600&token=5HwHU8ZKQD-kUh3Yw11nZwAAAAAABSZcAAABw60AAAAPAAEB&uID=")!)!, fileTypeHint: "AVFileTypeMPEGLayer3", error: &error)
if let e = error {
println(e.debugDescription)
} else {
player.prepareToPlay()
player.play()
}
}
上面这段代码看起来毫无问题,实际运行以后也是毫无问题,不报错,就是放不出声,非常奇怪。
一步解决奇怪问题
class ViewController: UIViewController {
var player: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var error: NSError?
player = AVAudioPlayer(data: NSData(contentsOfURL: NSURL(string: "https://dl.django.t.taobao.com/rest/1.0/file?acl=5222dc2f6b41f20dae409a7743dc04fb&cID=40001&fileIds=ytQkYL66QaOs_6tYGSRHQQAAAA8AAQIC&name=13-1.mp3×tamp=1426953600&token=5HwHU8ZKQD-kUh3Yw11nZwAAAAAABSZcAAABw60AAAAPAAEB&uID=")!)!, fileTypeHint: "AVFileTypeMPEGLayer3", error: &error)
if let e = error {
println(e.debugDescription)
} else {
player.prepareToPlay()
player.play()
}
}
}
在此控制器类的顶部事先声明播放器对象,即可成功播放!这个方法对于播放器对象数组、字典依然有效:
var playerArray = Array<AVAudioPlayer>()
var playerDictionary = Dictionary<Int, AVAudioPlayer>()
不让对象的内存被自动回收掉即可。
AVAudioPlayer 如何在页面呈现之后按需初始化的更多相关文章
- 【web性能】页面呈现、重绘、回流
在讨论页面重绘.回流之前.需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的处理流程.可能不同的浏览器略微会有些不同.但基本上都是类 ...
- 从输入一个URL到页面呈现,网络上都发生了什么?
归纳一下其中涉及到前端的一些基础知识,主要包括:http协议.web标准.w3c标准等. 这个问题虽然只有两个2个动作:输入URL和呈现页面,但这背后发生了很多"有趣" ...
- AngularJS中页面呈现html代码段
如何在页面呈现一段html代码段呢? 在textarea中我们这样写: <textarea name="" id="" cols="30&quo ...
- 高性能WEB开发:深入理解页面呈现、重绘、回流
在讨论页面重绘.回流之前.需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的处理流程.可能不同的浏览器略微会有些不同.但基本上都是类 ...
- 从输入url到页面呈现的过程
从输入url到页面呈现的过程包括两个基本过程:网络通信和页面渲染 网络通信主要过程是 域名解析 -> TCP连接 -> HTTP请求 -> 服务端响应,返回HTML 页面渲染的主要过 ...
- EasyDSS高性能流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载 - 副本
为了让页面更快完成加载, 第一时间呈现给客户端, 也为了帮助客户端节省流量资源, 我们可以开启 vue-router 提供的按需加载功能, 让客户端打开页面时, 只自动加载必要的资源文件, 当客户端操 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载
为了让页面更快完成加载, 第一时间呈现给客户端, 也为了帮助客户端节省流量资源, 我们可以开启 vue-router 提供的按需加载功能, 让客户端打开页面时, 只自动加载必要的资源文件, 当客户端操 ...
- 输入一个URL到页面呈现其中发生的过程-------http过程详解
在我们点击一个网址,到它能够呈现在浏览器中,展示在我们面前,这个过程中,电脑里,网络上,究竟发生了什么事情. 服务器启动监听模式 那我们就开始了,故事其实并不是从在浏览器的地址栏输入一个网址,或者我们 ...
- 在地址栏里输入一个 URL后,按下 Enter 到这个页面呈现出来,中间会发生什么?
这是一个面试高频的问题 在输入 URL 后,首先需要找到这个 URL 域名的服务器 IP,为了寻找这个 IP,浏览器首先会寻找缓存,查看缓存中是否有记录,缓存的查找记录为:浏览器缓存 ->系统缓 ...
随机推荐
- Struts2中的OGNL表达式
一.OGNL表达式简介 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.所谓对象图,即以任意一个对象为根,通过OGNL可以访问 ...
- 大数据之ES系列——第一篇 ElasticSearch2.2 集群安装部署
第一部分 安装准备 准备三台主机节点: hc11.spads 192.168.160.181 hc12.spads 192.168.160.182 hc13.spads 192.168.160 ...
- BAPI_PO_CREATE1 创建PO ch_memory_complete = ‘x',导致hold on 解决方案,
1.尝试注释标准逻辑,看会不会有什么问题, ZME_BAPI_PO_CUST IF_EX_ME_BAPI_PO_CREATE_02~INBOUND 里面有个控制很费解 我给注释了 2.改用 BAPI_ ...
- javascript 正则表达式 详细入门教程
1.什么是正则表达式 定义: 一个用来搜索.匹配.处理一些符合特定语法规则的一个强大的字符串处理工具. 用途: 进行特定字符和字符串的搜索 替换字符串中指定的字符或字符串 验证字符串是否符合需求 2. ...
- python基础知识踩点
1.注释 在python中,注释是以任何存在于#右侧的文字,其主要作用是写给程序读者看的笔记. 例如 单行注释 >>print("hello world") #这是一个 ...
- 搭建iis本地测试服务器
在“开始”选择 “控制面板”,默认是以“类别”显示, 改成“小图标”显示 选择“程序和功能” 进入界面后,点击“启动或关闭Windows功能” 然后勾选图中的两个选框,注意一定要显示为 ...
- Jmeter创建一个简单的http接口用例
1.新建线程组 添加->Threads(Users)->线程组 线程组用来模拟用户进程. 2.添加http信息头管理器 添加->配置元件->http信息头管理器 Systemi ...
- 编辑xml文件时不能自动提示问题的解决
在编辑xml文件时,eclipse总是不能自动提示,在网上找了一些资料,大部分都是说关于xml editor配置的,下面也把这个方法罗列在下面,以供参考: 解决办法:在eclipse的菜单里,找到wi ...
- Jquery form表单提交
起因 由于项目中原先提交from是通过JavaScript指定action,在submit提交的,使用的方式,也不是很标准,造成除了ie之外的浏览器都不能正常的提交数据,做web项目还是要考虑到浏览器 ...
- linux应用之gcc编译器的安装及使用
gcc是linux系统下功能十分强大的编译器. 本人使用的是CentOS 6.6 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于 ...