是否可以在Objective-c ++中将Notification Center添加到cpp类

Pra*_*ar 1 objective-c

我想从cpp类添加通知中心,是否可能????

如果是这样,我该怎么办?

Manager.h

class Manager
{

  Manager();

};
Run Code Online (Sandbox Code Playgroud)

Manger.mm文件

Manager:Manager()
{
[[NSNotificationCenter dafaultCenter] addObserver:self selector:@selector(workermethod) name:@" Name" object:(id)nil];
}
Run Code Online (Sandbox Code Playgroud)

我的编译器给出了一个错误,说自己没有声明.......是的,我知道这是一个明显的错误.

因为我不是从NSObject派生的....请告诉我是否可以在Cocoa中添加通知中心到cpp类?

Ben*_*n S 6

不,你做不到.

Objective-C和C++类层次结构是分开的.在C++上下文中,self未定义但this已定义.在Objective-C上下文中,this未定义且self是.

另外,addObserver需要一个id参数.C++对象实例不被认为是类型,id因此即使您将代码更改为pass this而不是self它也不会编译.

请参阅Objective-C编程语言手册中的C++限制.

解决方法是,创建一个Objectve-C类,它具有您希望通知的C++对象实例,并在Objective-C对象获取通知时简单地调用C++方法.

  • 不仅类层次结构是分开的,而且即使C++和Objective-C都有称为"对象"和"类"的东西,它们在两种语言中完全不同.就好像有人打电话开始称电话"手机" - 你仍然无法像手机那样使用电报. (2认同)