使用.mm文件可以使C++代码调用OC的函数,但是这仅仅是调用类似的这种[name fun]格式的,当想使用OC的NSNotificationCenter的时候,会发现在调用selector的时候不知道怎么弄。

就像这个下面的代码:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationHandler:)  name:@"notify" object:nil];

这里面的函数没法直接用,但是在接入一些sdk的时候,比如xy的,就必须使用OC的NSNotificationCenter来监听,所以可以采取这种办法,就是调用不同的方法:

void XYSDKController::XYLogin() {
    [[NSNotificationCenter defaultCenter] addObserverForName:kXYPlatformLoginNotification object:nil queue:nil  usingBlock:^(NSNotification *note) {
        xyplatformLoginNoti();
    }];
}

void XYSDKController::xyplatformLoginNoti() {
    //这里再调用其他的函数
}

当然还有外国的大神们说了另外种方法就是重构函数,和引入oc等。原文网址看这里:http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c


☟☟可点击下方广告支持一下☟☟

最后修改:2020 年 08 月 16 日
请我喝杯可乐,请随意打赏: ☞已打赏列表