面临两个错误。
此代码在 iOS 4 和 5 中工作,但更新到 6 后,它不工作(
我发现了以下内容,但不知道如何在代码中修复它。
从 iOS 6 开始,应用程序需要在其 UIBackgroundModes 中包含音频键才能使用 CoreMIDI 的 MIDISourceCreate 和 MIDIDestinationCreate 函数。如果没有键集,这些函数将返回 kMIDINotPermitted (-10844)。
2012-09-23 03:40:04.773 MidiStudio [1017:907] 错误(创建 MIDI 虚拟源):-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;
}
}