[英]How to debug error -1500 returned by AudioServicesCreateSystemSoundID?
[英]AudioServicesCreateSystemSoundID and Memory Address Argument - How to pass in a property?
我有一個AudioServicesCreateSystemSoundID方法,根據文檔,該方法似乎需要傳入的內存地址(* outSystemSoundID)。
從Apple網站...
OSStatus AudioServicesCreateSystemSoundID (
CFURLRef inFileURL,
SystemSoundID *outSystemSoundID
);
當我在方法中創建本地對象時,此代碼可以工作。 該對象已正確分配到存儲位置。
這將返回代碼為myTest的代碼:0(這是我想要的)
SystemSoundID thisSoundID;
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), &thisSoundID
);
但是,這就是我想要做的。 (我已將self.theSound設置為SystemSoundID屬性)。
這將返回myTest,錯誤代碼為:4294967246(我不希望這樣)
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), self.theSound
);
編譯器將self.theSound
轉換為
[self theSound]
其中-(SystemSoundID)theSound
是屬性的(自動合成的)getter方法(默認情況下),該方法從_theSound
實例變量獲取值。
因此,您不能使用“屬性的地址”並將其傳遞給函數。 您可以改為傳遞實例變量的地址:
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), &self->_theSound
);
繞過屬性訪問器。 但我建議改用一個臨時變量:
SystemSoundID thisSoundID;
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), &thisSoundID
);
self.theSound = thisSoundID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.