这是苹果的代码
- (BOOL)removeConnection: (MIDINetworkConnection *)connection;
在
-[MIDINetworkSession removeConnection:]
但它会导致
EXC_BAD_ACCESS
。这仅在iOS 9中发生。有任何帮助或解决方法吗?
最佳答案
Yar的回答对我有所帮助,但它没有涵盖与其他设备断开连接的情况。而不是将对象存储到removeConnection中的数组中:我有一个管理器对象,该对象侦听MIDINetworkNotificationSessionDidChange通知,查找任何新连接,并将引用添加到NSMutableSet。
因此,在我的经理初始化中,我有:
self.connRefs = [NSMutableSet set];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(sessionChanged:)
name:MIDINetworkNotificationSessionDidChange object:nil];
[self sessionChanged:nil];
...和我的sessionChanged:方法:
- (void)sessionChanged:(NSNotification *)n {
// ios9 bug hack to keep ref to prevent bad_exec
for (MIDINetworkConnection *c in [MIDINetworkSession defaultSession].connections) {
[self.connRefs addObject:c];
}
}
这似乎是找出如何存储对每个连接的引用的快速方法,无论是谁发起的。然后,当连接被删除(通过您的应用程序或其他设备)时,引用已存储,并且不会崩溃!