2017-07-17 1 views
0

Je suis confronté à un problème de plantage sur iOS CoreBluetooth [CBPeripheralManager AddService:].Échec d'assertion iOS crash sur CBPeripheralManager AddService:

Apparaît en raison d'un échec d'assertion dans la méthode addService. J'ai essayé de nombreuses façons, je n'arrive toujours pas à comprendre le problème. D'après ce que j'ai compris, il ne s'agit pas d'une exception de pointeur nul, car j'ai déjà testé la transmission d'une valeur nulle en tant que paramètre AddService, ce qui génère un problème différent.

J'ai implémenté tous les délégués de CBPeripheralManager y compris les délégués CBCentral.

En général, cela fonctionne très bien. Normalement, je ne peux pas reproduire ce problème avec intention. Mais cela se produit soudainement.

Veuillez nous aider . journal crash:

0 CoreFoundation     0x18b3cafe0 __exceptionPreprocess + 124 
1 libobjc.A.dylib    0x189e2c538 objc_exception_throw + 56 
2 CoreFoundation     0x18b3caeb4 +[NSException raise:format:arguments:] + 104 
3 Foundation      0x18be62720 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112 
4 CoreBluetooth     0x1922ab420 -[CBPeripheralManager addService:] + 820 
5 MyApp      0x10110e1f4 -[MyPeripheralManager addServiceIntoPeripheralManager] (MyPeripheralManager.m:202) 

code Snipet:

-(void)addService{ 
if (!isServiceAdded) { 
    CLLog("Add Service timer started"); 
    [backgroundTaskManager manageBackgroundRunningTask]; 
    /* 
    AddService will be called after 5 seconds 
    when application launching finished or iOS BT on 
    */ 
    [self performSelector:@selector(addServiceIntoPeripheralManager) withObject:self afterDelay:SERVICE_ADDING_DELAY]; // 5 secs 

} else { 
    CLDbg("Service already added"); 
} 
} 
- (void)addServiceIntoPeripheralManager{ 
CLLog("Add Service timer expired"); 
CLDbg("Service Adding: %@", [UUIDString]); 
[cbPeripheralManager addService:Service]; 
} 

Merci à l'avance.

+0

part du code que vous essayez –

+0

s'il vous plaît partager votre code – Dhiru

+0

l'extrait de code est ajouté, pourriez-vous s'il vous plaît partager la raison derrière ce type d'échec d'assertion. –

Répondre

1

Vous n'êtes pas implémentez les mises à jour de rappel de votre BluetoothManager

voir this answer

et This answer

J'espère que cela vous aidera

+0

J'ai mis en place tous les délégués de CBPeripheralManager, y compris les délégués de CBCentral. En général, cela fonctionne bien. Normalement, je ne peux pas reproduire ce problème avec intention. Mais cela se produit soudainement. –