2016-09-07 3 views
0

Я работаю на технологии Bluetooth: монитор сердечного ритма, и я последовал код из https://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitorЯдро Bluetooth не будет восстанавливать, когда вернется, чтобы посмотреть контроллер

я теперь приложение работает великолепно. В этом же приложении у меня есть несколько других контроллеров представлений, которые делают некоторые другие вещи, такие как страница входа и простая страница «О нас». Проблема в том, что, возвращаясь к контроллеру представления, содержащему фактический монитор сердечного ритма, монитор сидит в 0 и не будет обновлять значения.

У меня есть восстановит код и делегатов на месте:

-(void)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state { 

    NSLog(@"willRestoreState called"); 
    self.polarH7HRMPeripheral = [state[CBCentralManagerRestoredStatePeripheralsKey] firstItem]; 
    self.polarH7HRMPeripheral.delegate = self; 
    } 

центральный менеджер объявлен следующим образом:

CBCentralManager *centralManager =[[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{ CBCentralManagerOptionRestoreIdentifierKey:@"myCentralManagerIdentifier" }]; 

Когда возвращается к контроллеру представления, я заметил, что willRestoreState не является называемый.

Я потерян относительно того, где искать дальше. Может ли кто-нибудь помочь? Заранее спасибо.

+1

Вы не должны держать свой объект Bluetooth в контроллере представления. Держите его в другом классе, который не освобождается – Paulw11

ответ

1

Если объект CBCentralManager будет освобожден, то эти методы не будут работать, поскольку это методы делегата CBCentralManager.

Для того, чтобы это работало, вы должны повторно инициализировать объект CBCentralManager, чтобы получить ЧСС.

Как это

self.hrCBManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];