我有一个班级管理来自和去iPad的外部附件的消息。在init我有以下代码:EAAccessoryDidConnectNotification为什么会发生两次?
- (id) init
{
self = [super init];
if (!self) return;
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; //we want to hear about accessories connecting and disconnecting
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(accessoryDidConnect:)
name:EAAccessoryDidConnectNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(accessoryDidDisconnect:)
name:EAAccessoryDidDisconnectNotification
object:nil];
...
}
中的dealloc我
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidDisconnectNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidConnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications];
}
出于某种原因,当我外部附件连接到iPad的accessoryDidConnect:火灾后跟accessoryDidDisconnect:跟随通过accessoryDidConnect:
我想不通,为什么我会得到一个额外的连接和断开。有任何想法吗?
更新,并检查了这一点 –
好了,事情似乎现在工作正常。我现在只收到一次accessoryDidConnect/accessoryDidDisconnect消息,这很好。但是,它似乎与调用registerForLocalNotifications的顺序无关。但是,我发现的所有文档都是按照您在此处订购的顺序进行注册。我似乎稍微做了一些倒退。我认为真正的问题可能在EAAccessory对象的引用计数中。最近这段代码有很多代码更改,但它们不是我自己的。我与开发者交流了他们,并且... – Sam
他不确定为什么这些通知现在只能进入一次。作为一个方面说明,我们的引用计数是关闭的,因为我们没有意识到线程增加了线程运行目标的引用计数。无论如何,我会将此标记为答案,即使我不能100%确定为何突然出现这种情况。 – Sam