我有一個班級管理來自和去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