面临两个错误。
这段代码在iOS 4和5中有效,但在更新到6后,它不起作用了
我发现了以下内容,但不知道如何在代码中进行修复。
从iOS 6开始,应用程序需要在其UIBackgroundModes中具有音频键,才能使用CoreMIDI的MIDISourceCreate和MIDIDestinationCreate函数。如果不设置键,这些函数将返回kMIDINotPermitted(-10844)。
2012-09-23 03:40:04.773 MidiStudio [1017:907]错误(创建MIDI虚拟源):-10844:Error Domain = NSMachErrorDomain代码= -10844“操作无法完成。(机器错误-10844。 )”
2012-09-23 03:40:04.777 MidiStudio [1017:907]错误(创建MIDI虚拟目标):-10844:Error Domain = NSMachErrorDomain Code = -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;
}
}
最佳答案
[只要将我的笔记放在这里,就是Kurt的出色回答。]
首先,在名为“ iOS 6.0发行说明”的文档中提到了所有这些内容。那里的行说:
从iOS 6开始,应用程序必须在其音频键中
UIBackgroundModes,以便使用CoreMIDI的MIDISourceCreate和
MIDIDestinationCreate函数。没有按键设置,这些功能
将返回kMIDINotPermitted(-10844)。
因此,您唯一需要做的事情(同样,只需指定Kurt回答的问题)就是每个目标的plist中的类似内容:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>