У меня есть класс, который управляет сообщениями, поступающими из внешнего аксессуара и идущими на iPad. В инициализации У меня есть следующий код:Почему 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: с последующим by accessoriesDidConnect:
Я не могу понять, почему я получил бы дополнительное подключение и разъединение. Есть идеи?
обновлено и проверьте это –
Ну, похоже, сейчас все работает правильно. Я только получаю сообщение accessDidConnect/accessoriesDidDisconnect один раз сейчас, что хорошо. Однако, похоже, он не связан с порядком, который вызывается registerForLocalNotifications. Но вся документация, которую я когда-либо обнаружил, вызывает вызов регистра в том порядке, который у вас есть. Кажется, я делаю это немного назад. Я думаю, что реальная проблема, возможно, была в моем подсчете ссылок на объект EAAccessory. В последнее время в этой области кода было много изменений кода, но они не были мной. Я поговорил с разработчиком, который их сделал, и ... – Sam
Он не уверен, почему эти уведомления появляются только сейчас. В качестве побочного примечания наш подсчет ссылок был отключен, потому что мы не понимали, что потоки увеличивают количество ссылок на цель, на которую выполняется поток. Во всяком случае, я отмечу это как ответ, хотя я не уверен на 100%, почему это внезапно работает правильно. – Sam