苹果开发 笔记(35)音频

这两天继续踩坑,在写swift的时候,遇到不少可笑的事情。对oc熟悉一段时间突然写swift 会多少有点不习惯。除了语法外,还有一些很细微的地方有时候让人感觉奔溃。在一个类声明一个字典,本来是一件很平常时候,有时候xcode却一直报错是单例缺少init,很莫名奇怪的错误,解决时候,却发现声明字典的时候出现了误导自己。

今天就是因为下面这个错误一直误导自己,犯下了一些错误。今天记录下来。

1.声明字典的坑
 var soundDictionary = [String,UInt32]()
 var idw:SystemSoundID = 0
 soundDictionary["w"] = idw//这样赋值会出现错误

 var dic = Dictionary<String,UInt32>()
dic["ok"] = 34

        var dic2:Dictionary = Dictionary<String,UInt32>(minimumCapacity: 4);
        dic2["q5"] = 43
         dic2["q4"] = 43
         dic2["q3"] = 43
         dic2["q2"] = 43
2、播放音效的坑

除了练习外,收到一个声音上的需求,播放一个音效。也遇到一个坑就是采用 AudioServicesPlaySystemSound(soundId) 播放音频在模拟器上没有声音,在真机的时候有。在查阅stackflow的时候也有很多人遇到想同的问题,真机有事,模拟器没事。各种奇怪的事情。同样使用AudioServicesPlaySystemSound 播放的时候 对音频格式要求,使用mp3的时候却播放不出来。奇怪的事情也是因为对API使用不熟悉。最不查阅的时候,没有错,却发生异常情况。可能是设置,也有可能是一行代码影响了。所以说在学这个的时候会发生很多郁闷的事情。

使用AVAudioPlayer 播放会比较容易和成功,调试的时候比AudioServicesPlaySystemSound 顺利得多。因此在开发过程中,遇到这个还真挺郁闷的。

明天继续。

3、AVAudioPlayer播放的坑

之前发生过一个坑,AVAudioPlayer 对象很快就收回导致发不出声音,于是采取了声明强引用才没有事。顺带一下,NSBundle 还真很多API,URL开头的还真不少,这个封装有利于返回一个URL对象,便于AVAudioPlayer 参数使用。

(void) playMusicWithName:(NSString *) name loops:(NSInteger) loops
{

    NSURL *url =  [[NSBundle mainBundle] URLForResource:name withExtension:nil];
    NSError *error = nil;
    audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
    if(loops > 0) audioPlayer.numberOfLoops = loops;
    [audioPlayer play];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值