使用.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
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/221.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!
2 条评论
[NSUserNotificationCenter defaultUserNotificationCenter],大佬,我这个方法返回nil怎么回事,我也是在c++中调用.mm文件中的方法。
这个是系统的单例,用于通知模式的开发
[NSNotificationCenter defaultCenter]
,你发的NSUserNotificationCenter
是iOS用来发送本地通知提醒的东西,你理解错了吧