我有兩個kontakt.io信標。我可以使用AppStore中提供的默認Kontakt.io應用程序來找到它。但是,當我使用SDK並嘗試在我的自定義應用程序中找到它時,該應用程序會請求藍牙,這意味着它會對其執行某些操作,但不會找到信標。iOS kontakt.io信標搜索
根據documentation我只能創建一個KTKBeaconManager類的對象,分配一個KTKBeaconManagerDelegate並調用startFindingDevices方法。之後,只要範圍內的設備發生變化,代表就會收到回調。我使用名爲BeaconManager的類擴展了KTKBeaconManager。這是它的代碼(是的,我已經導入了所有代碼和編譯代碼,我沒有把它放在這裏來節省空間)。
BeaconManager.h
@interface BeaconManager : KTKBeaconManager <KTKBluetoothManagerDelegate>
@end
BeaconManager.m
@implementation BeaconManager
- (instancetype)init
{
self = [super init];
if (self) {
//Setting the delegate to self
self.delegate = self;
}
return self;
}
- (void)bluetoothManager:(KTKBluetoothManager *)bluetoothManager didChangeDevices:(NSSet *)devices {
NSLog(@"Entered didChangeDevices. Devices size: %d", devices.count);
}
@end
啓動搜索。
BeaconManager *beaconManager = [BeaconManager new];
[beaconManager startFindingDevices];
[beaconManager reloadDevices]; //Tells the manager to forget all devices and start searching again.
這實際上是從documentation一個示例代碼,但它不工作。任何人都會經歷類似的事情,並且知道該怎麼做?
是的,你說得對的時間等。我曾經是Objective-C的初學者,之前我曾在Java中工作過,在這種情況下可以工作,所以這就是爲什麼我認爲它可能工作。 – Adogeon
奇怪的是,在我知道局部變量的每種編程語言中,當程序正在離開其存在範圍的方法時,它將被釋放。據我所知在Java中也是如此。 –
你是對的,它被釋放,引用被銷燬,因此引用計數器銷燬整個對象,即使實際上有一些代碼在該對象上運行。 即使對象沒有引用,Java仍會將代碼保存在運行的對象中,如果該對象具有引用回調的引用。 – Adogeon