我正在使用CoreBluetooth框架在MAC上进行蓝牙通信。
使用Pure Objective C,代码运行良好。
我想从cpp调用Objective c代码,我正在使用包装器函数来执行此操作并初步化了centralManager。但是没有调用centralManagerDidUpdateState委托(即中央管理器没有启动)。
在处理来自cpp类的目标c委托时,是否需要注意一些事项?
我是Objective c编码的新手。对此的任何输入都会有所帮助。
代码:
CInterface.h->
void wrapperFunction();
main.cpp - >
#include <CInterface.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
wrapperFunction();
return a.exec();
}
MyDelegateObject.h - &gt;
#include <CInterface.h>
#include <IOBluetooth/IOBluetooth.h>
@interface MyDelegateObject : NSObject <CBCentralManagerDelegate> {
}
- (void) centralManagerDidUpdateState:(CBCentralManager *)central;
@end
MyDelegateObject.mm-&GT;
@implementation MyDelegateObject
void wrapperFunction(){
qDebug()<<"Inside Wrapper function";
MyDelegateObject *myDelegate = [MyDelegateObject alloc];
CBCentralManager *myCentralManager = [[CBCentralManager alloc] initWithDelegate:myDelegate queue:nil];
}
- (void) centralManagerDidUpdateState:(CBCentralManager *)central
{
qDebug()<<"inside delegate";
}
它的enctring进入wrapperFunction,我能够获得&#34; Inside Wrapper功能&#34;打印。 但是在initWithDelegate之后,应该调用centralManagerDidUpdateState。这不会发生。
我错过了什么吗?
谢谢, SK