2012-07-28 20 views
5

köprülü bir döküm hata gerektirir ama ben kodu:CFURLRef Ben oynamak için bir ses almaya çalışıyorum

AudioServicesCreateSystemSoundID ((CFURLRef) alertSound, &soundFileObject); 

aşağıdaki hatayı atar: Objective-C işaretçi Çeşidi

Cast '

: CFURLRef '(diğer adıyla 'const yapı __CFURL *') 'Cı işaretçi tipine' NSURL * çözüm önerileri aşağıdaki

I iki ikisinin çalıştılar köprülü bir döküm hata gerektirir

AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject); 

veya

AudioServicesCreateSystemSoundID ((CFURLRef) CFBridgingRetain(alertSound), &soundFileObject); 

Ama yine ses çalmak için alamıyorum.

Sanırım şu soru şu: soru, sesin çalınmasının neden olmadığı köprüleme hatası mı, yoksa başka bir yere mi bakmalıyım?

SysSound örnek kodunu kullanarak sesin sesini alabilirim ve iOS 6 ve Xcode 4.5 kullanıyorum. Herhangi işaretçileri için

Teşekkür :)

cevap

9

dökme muhtemelen ses oynamıyor neden değildir:

AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject); 

gayet iyi.

Büyük olasılıkla hatanınız bize göstermediğiniz bir koddur. Yaygın bir sorun, URL oluşturulmasında veya geçersiz bir dosya biçiminde bir hatadır.

OSStatus status = AudioServicesCreateSystemSoundID((__bridge CFURLRef)alertSound, &soundFileObject); 
NSLog(@"AudioServicesCreateSystemSoundID status = %ld", status); 

ve ne olsun durum kodu kontrol;:

şöyle kodunuzu değiştirin parmErr (-50) nispeten yaygındır ve genellikle URL’nizin sıfır olduğu anlamına gelir.

Oh, ve bir düşünce daha, aslında sesin nerede çaldığını göstermiyorsunuz. AudioServicesCreateSystemSoundID'un aslında ses çalmadığını biliyorsunuz. Aramanız gerekenler:

AudioServicesPlaySystemSound(soundFileObject); 

Bunu zaten biliyor olsaydınız özür dileriz!

+0

Yep, -50. NSURL'm şu şekilde görünüyor: NSURL * alertSound = [[NSBundle mainBundle] URLForResource: @ "tap" withExtension: @ "aif"]; Ve "tap.aif" dosyası, Sesler adlı oluşturduğum bir grupta bulunuyor. Yerleştirilmesi gereken belirli bir yer var mı? Yardımlarınız için çok teşekkürler! – robspencer77

+0

Sadece hata ayıklayıcısında veya "NSLog" ile URL’nin gerçekten geçersiz olduğunu doğrulayın. Bu, (şüphelenmeye başladığınızı düşündüğümden), Xcode'un sesinizi uygulamanızın paketine kopyalamaması anlamına gelecektir. Projeden çıkarmayı (yalnızca referans !!!!) kaldırmayı ve yeniden eklemeyi deneyebilir ve ayrıca dosya adının yazımının doğru olup olmadığını (çifte olabilir mi?) Iki kez kontrol edebilirsiniz. Onu özel bir yere koyman gerektiğini düşünmüyorum. Ben genellikle Xcode'un oluşturduğu "Destek Dosyaları" grubuna koyarım ama bunun gerekli olduğunu düşünmüyorum. – idz

+0

Ah, anladım! Teşekkürler! :) Bunun neden ilk etapta düzgün şekilde eklenmediğinden emin değil. Şerefe, idz! – robspencer77

İlgili konular