저는 iPad에서 외부 액세서리로 전송되는 메시지를 관리하는 클래스를 운영하고 있습니다.왜 EAAccessoryDidConnectNotification이 두 번 발생합니까?
내가 어떤 이유로- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidDisconnectNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidConnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications];
}
을 가지고의 dealloc에서
- (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];
...
}
나는 아이 패드에 accessoryDidConnect를 외부 액세서리를 연결할 때 : accessoryDidDisconnect 다음에 불을 : 다음은 init에서 나는 다음과 같은 코드가 있습니다 accessoryDidConnect :
추가 연결 및 연결 해제 이유를 알 수 없습니다. 어떤 아이디어?
업데이트하고 확인해보십시오. –
글쎄, 지금 올바르게 작동하고있는 것 같습니다. accessoryDidConnect/accessoryDidDisconnect 메시지를 한 번만 얻습니다. 이는 좋은 것입니다. 그러나 registerForLocalNotifications가 호출되는 순서와 관련이없는 것처럼 보입니다. 그러나 내가 찾은 모든 문서는 당신이 여기있는 순서대로 등록 전화를합니다. 나는 그것을 조금 뒤로하고있는 것처럼 보인다. 진짜 문제는 EAAccessory 객체의 참조 카운팅에있을 수 있다고 생각합니다. 최근에이 코드 영역에는 많은 코드 변경 사항이 있었지만 이들은 나로부터 나왔습니다. 나는 그 (것)들을 한 dev에 이야기하고, ... – Sam
그는 왜 그 통지가 지금 단 한번오고 있는지 확실하지 않다. 부수적으로, 스레드가 실행되는 대상의 참조 횟수가 증가한 것을 인식하지 못 했으므로 참조 카운팅이 해제되었습니다. 아무리해도 갑자기 왜 제대로 작동하는지 100 % 확신 할 수는 없지만 이것을 답변으로 표시하겠습니다. – Sam