2013-06-14 2 views
14

는 내가 아이폰 5에 CoreBluetooth를 사용하여 내 응용 프로그램을 실행할 때이 오류가 점점 계속 : <CBConcreteCentralManager: 0x2007d590> is not powered on언제 CBCentralManager의 상태가 계속 켜져 있지만 "전원이 켜져 있지 않음"이라는 경고가 표시됩니까?

을하지만 내 프로그램의 유일한 CBCentralManager 객체에 state를 호출 할 때, 그것은 CBCentralManagerStatePoweredOn 인 5를 반환합니다. 따라서 전원이 켜져 있는데도 오류가 발생합니다. 아이폰의 블루투스도 가능하다.

일반적으로 언제 이런 일이 발생합니까? 나는 충돌하는 메시지처럼 보이기 때문에 프로그램이 실행될 때 어떤 일이 벌어지고 있는지조차 알지 못한다.

답변

22

앱을 부팅 할 때 centralManager가 centralManagerDidUpdateState:에서 콜백을받을 때까지 기다려야합니다. 그런 다음에 매번 centralManager 호출을 수행하기 전에 상태를 확인하는 것이 좋습니다. 중앙에서 업데이트 할 수 있기 전에 스캔 또는 검색을 호출 할 가능성이 큽니다. 메소드가 켜져 있음을 확인한 후에 만 ​​메소드를 호출하도록하십시오. 각 상태를 먼저 확인하는 if 문에서 각 호출을 래핑하면 오류가 발생하지 않습니다.

- (void)centralManagerDidUpdateState:(CBCentralManager *)central 
{ 
    if(central.state==CBCentralManagerStatePoweredOn) 
    { 
     //Now do your scanning and retrievals 
    } 
} 

그렇지 않으면 단지 각 호출하기 전에 상태 점검 내부의 중앙을 포장 :

if(yourCentral.state==CBCentralManagerStatePoweredOn) 
{ 
//you're good to go on calling centralManager methods 
} 
+0

네를, 그게 문제였다. 감사. – sudo

+0

감사합니다. 문제가 해결되었습니다. Xcode 5 GM 시뮬레이터로 업그레이드 할 때 어떤 이유로이 일이 저에게 일어나기 시작했습니다. – Dan

+1

저는 Apple이 더 이상 Xcode 5에서 BLE 시뮬레이터 지원을 지원하지 않는다고 확신합니다. –

관련 문제