面臨兩個錯誤。CoreMIDI/PGMidi iOS6中的虛擬MIDI錯誤
此代碼工作在的iOS 4和5,但更新至6之後,它不工作(
我發現以下,但不知道如何解決它的代碼。
在iOS 6中開始,應用程序必須要使用CoreMIDI的MIDISourceCreate和MIDIDestinationCreate功能在他們的UIBackgroundModes音頻關鍵。如果沒有按鍵,這些函數將返回kMIDINotPermitted(-10844)。
2012年9月23日03:40:04.773 MidiStudio [1017:907]錯誤(創建MIDI虛擬酸ce):-10844:錯誤域= NSMachErrorDomain代碼= -10844「該操作無法完成。 (馬赫錯誤-10844。)「
2012-09-23 03:40:04.777 MidiStudio [1017:907]錯誤(創建MIDI虛擬目標):-10844:錯誤域= NSMachErrorDomain代碼= -10844」操作無法完成。 (馬赫錯誤-10844)」
這裏是代碼‘源’:
-(void)setVirtualSourceEnabled:(BOOL)virtualSourceEnabled {
if (virtualSourceEnabled == self.virtualSourceEnabled) return;
if (virtualSourceEnabled) {
NSString *name = virtualEndpointName ? virtualEndpointName : [[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString*)kCFBundleNameKey];
OSStatus s = MIDISourceCreate(client, (CFStringRef)name, &virtualSourceEndpoint);
NSLogError(s, @"Create MIDI virtual source");
if (s != noErr) return;
virtualSourceDestination = [[PGMidiVirtualSourceDestination alloc] initWithMidi:self endpoint:virtualSourceEndpoint];
[delegate midi:self destinationAdded:virtualSourceDestination];
[[NSNotificationCenter defaultCenter] postNotificationName:PGMidiDestinationAddedNotification
object:self
userInfo:[NSDictionary dictionaryWithObject:virtualSourceDestination
forKey:PGMidiEndpointKey]];
} else {
[delegate midi:self destinationRemoved:virtualSourceDestination];
[[NSNotificationCenter defaultCenter] postNotificationName:PGMidiDestinationRemovedNotification
object:self
userInfo:[NSDictionary dictionaryWithObject:virtualSourceDestination
forKey:PGMidiEndpointKey]];
[virtualSourceDestination release]; virtualSourceDestination = nil;
OSStatus s = MIDIEndpointDispose(virtualSourceEndpoint);
NSLogError(s, @"Dispose MIDI virtual source");
virtualSourceEndpoint = NULL;
}
}
注意自我:閱讀發行說明。 –
僅供參考,用戶友好的plist項目名稱是「所需的背景模式」 –