Ho una classe che gestisce i messaggi che arrivano da un accessorio esterno a un iPad. Nella init Ho il codice seguente:Perché EAAccessoryDidConnectNotification si verifica due volte?
- (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];
...
}
in dealloc ho
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidDisconnectNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidConnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications];
}
Per qualche ragione, quando si collega l'accessorio esterno per l'iPad l'accessoryDidConnect: incendi seguiti da un accessoryDidDisconnect: seguita by accessoryDidConnect:
Non riesco a capire perché mi piacerebbe avere una connessione in più e disconnettere. Qualche idea?
aggiornato e verificare questo –
Bene, le cose sembrano funzionare correttamente ora. Ricevo solo un messaggio accessorioDidConnect/accessoryDidDisconnect una volta, il che è positivo. Tuttavia, sembra non essere correlato all'ordine in cui viene registrato registerForLocalNotifications. Ma tutta la documentazione che abbia mai trovato fa la chiamata al registro nell'ordine che hai qui. Mi sembra di fare un po 'indietro. Penso che il vero problema potrebbe essere stato nel mio conteggio di riferimento dell'oggetto EAAccessory. Ultimamente ci sono state molte modifiche al codice in quest'area di codice, ma non erano da me. Ho parlato con il dev che li ha fatti, e ... – Sam
Non è sicuro del motivo per cui queste notifiche arrivano solo una volta. Come nota a margine, il nostro conteggio dei riferimenti era disattivato perché non ci siamo resi conto che il threading aumentava il conteggio dei riferimenti del target su cui il thread scorre. Comunque, segnerò questa come risposta anche se non sono sicuro al 100% sul perché tutto funzioni all'improvviso. – Sam