我有一个班级来管理来自和转到iPad的外部附件的消息。在init中我有以下代码:
- (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:触发,然后是来自附件IDDisconnect:nextDidConnect:
我无法弄清楚为什么我会得到额外的连接和断开连接。有什么想法吗?
答案 0 :(得分:5)
eaaccessory框架将始终从某种原因触发2个连接和2个断开连接通知。第一个连接断开线对没有协议字符串,您可以忽略它们。
答案 1 :(得分:3)
更改为此序列。然后是第一个通知注册管理员
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(accessoryDidConnect:)
name:EAAccessoryDidConnectNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(accessoryDidDisconnect:)
name:EAAccessoryDidDisconnectNotification
object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; //we want to hear about accessories connecting and disconnecting
答案 2 :(得分:2)
不是答案,但我无法发表评论。我也在使用上面答案中提供的代码看到这个双重通知。我也在Apple提供的EADemo示例代码中看到它。
答案 3 :(得分:0)
答案在于EAAccessoryDidConnectNotification
在某些情况下,可以在身份验证完成之前发送连接通知,从而导致空的protocolStrings数组和随后的断开连接消息。如果发生这种情况,稍后会在身份验证成功时发送另一条连接消息。
它绝对不应该一直发生,但是如果你收到这个连接/断开/连接的序列,检查协议字符串。它可能与身份验证失败有关。