Xcode7.3中SKAudioNode"诡异"初始化的解决

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)



我没有在之前版本的Xcode中测试,不过很多人反映SKAudioNode的初始化代码在Xcode7.3之前工作的十分美好,不过在7.3中以下代码出错:

var bgMusic:SKAudioNode!

func playBgMusic(name:String){
        if bgMusic != nil{
            bgMusic.removeFromParent()
        }

        bgMusic = SKAudioNode(fileNamed: name)
        bgMusic.autoplayLooped = true
        addChild(bgMusic)
    }

正如你所见,bgMusic是一个对象属性,上述代码运行时bgMusic会返回nil,然后后面会报如下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

请大家相信,音乐资源文件名称绝对正确,也存放在App的Main bundle中.

因为代码使用Swift写的,不确定对应的Objc代码是否也是这样.

解决办法如下,声明一个局部变量临时存放一下返回值即可:

func playBgMusic(name:String){
        if bgMusic != nil{
            bgMusic.removeFromParent()
        }

        let tmpMusic = SKAudioNode(fileNamed: name)
        tmpMusic.autoplayLooped = true
        bgMusic = tmpMusic
        addChild(bgMusic)
    }
时间: 2024-10-01 12:46:40

Xcode7.3中SKAudioNode"诡异"初始化的解决的相关文章

关于Quartus和ISE中ROM的初始化和仿真的一些小结

最近在玩Altera的FPGA,当我用Quartus II自带的IP核生成ROM时,出现了各种问题,于是在网上各种查资料,终于解决了我的问题.这里做一下小结,方便自己日后查阅. Quartus II 和ISE在仿真和初始化时有些些区别,这里简要介绍一下二者的初始化和仿真步骤:1.用Quartus II创建并仿真ROM Step1:在Quatus II工程下生成一个ROM Step2:编写.mif文件,作为ROM的初始化文件 Step3:将.mif文件拷贝到Modelsim工程下 Step4:进行

子线程中CApplication::CreateDispatch失败的解决方法

问题描述: CApplication appExcel; BOOL bCreateRet = appExcel.CreateDispatch("Excel.Application"); 以上代码在主线程中bCreateRet返回TRUE,在子线程中bCreateRet返回FALSE. 问题原因: 执行线程时没有初始化. 解决办法: 添加初始化函数. AFX_MANAGE_STATE(AfxGetStaticModuleState()); CoInitialize(NULL); AfxE

App.config“配置系统未能初始化” 异常解决 C#

System.Configuration.ConfigurationManager.AppSettings["user"]; 时出现“配置系统未能初始化” 错误 解决办法: 如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素.",将appSettings放到configSections 后,则正常. 是调用log4net的问题,把App.config顺序搞乱了. <?xml

在沙箱中IE不能上网的解决方法

最近在解决一个问题,在我们的沙箱中IE不能上网 现象: IE不能上网,输入www.baidu.com 提示:不能查找到DNS.也不能ping 通 其他浏览器上网没有问题(SG浏览器,Chrome ,firefox,猎豹,360) 为什么IE不能上网呢? 解决: 在应用层挂调试IE,在ws2_32!socket 下断点,发现 socket 不能创建成功.然后发现首先需要访问 qurl.f.360.cn ,然后再访问www.baidu.com 那么难道我访问网址需要经过qurl.f.360.cn过滤

移动端网页布局中需要注意事项以及解决方法总结

移动端网页布局中需要注意事项以及解决方法总结,这份对我们在布局移动端网页的时候非常有用! winphone系统a.input标签被点击时产生的半透明灰色背景怎么去掉<meta name="msapplication-tap-highlight" content="no">1.关闭iOS键盘首字母自动大写<input type="text" autocapitalize="off" />2.禁止文本缩放h

RecyclerView中ViewHolder重用机制理解(解决图片错乱和闪烁问题)

RecyclerView中ViewHolder重用机制理解(解决图片错乱和闪烁问题) 对于使用ViewHolder引起的图片错乱问题,相信大部分人都有遇到过,我也一样,对于解决方法也有所了解,但一直都是知其然不知其所以然. 所以,这次直接把ViewHolder的工作原理,通过简单的demo代码来验证一次,验证后对于图片错乱和闪烁这种问题的成因就很清楚了. 下面先上一副图 这幅图就比较清晰的画出了ViewHolder的工作原理. 可以看到,图中左上角item1上面有一条蓝色的线,item7下面也有

Java中的ExceptionInInitializerError异常及解决方法

当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常.如果你了解Java中的静态变量,你会知道它们是在类加载的时候进行初始化的.如果在这个静态变量初始化的过程中出现了异常,那么就会抛出 java.lang.ExceptionInInitializerError异常.任何异常都可能会引发这种情况,比如说,java.lang.ArrayIndexOutOfBound或者java.lang.NullPointerExcepti

极光推送demo测试流程,测试过程中可能遇到的问题和解决方法

创建开发证书,创建描述文件,极光推送页面设置,Xcode工程设置,真机测试 步骤1:创建开发证书 <1>.登陆 https://developer.apple.com进入开发者中心 <2>进入创建和描述文件页面 <3>.点击App IDs 创建一个app id <4>.进入创建页面以后在App ID Description输入app id 的名称 <5>.填入一个唯一的app id (注:推送的app id 只能创建一个唯一的,不能使用通用的.)

机器学习中常见的过拟合解决方法

在机器学习中,我们将模型在训练集上的误差称之为训练误差,又称之为经验误差,在新的数据集(比如测试集)上的误差称之为泛化误差,泛化误差也可以说是在模型在总体样本上的误差.对于一个好的模型应该是经验误差约等于泛化误差,也就是经验误差要收敛于泛化误差,根据霍夫丁不等式可知经验误差在一定条件下是可以收敛于泛化误差的. 当机器学习模型对训练集学习的太好的时候(再学习数据集的通性的时候,也学习了数据集上的特性,这些特性是会影响模型在新的数据集上的表达能力的,也就是泛化能力),此时表现为经验误差很小,当往往此