如何在c++中实现UIView方法



我有这样的东西:

// main.m
@interface MYView : UIView { @public int counter; } @end;
@implementation MYView 
- (void)drawRect:(CGRect)rect {
}
@end

现在我想从实现中删除drawRect方法(或任何其他方法),并将其移动到c++文件utility.cpp.

我需要这个的原因是,我必须使用一些不能在objective - c++中编译的c++库。我需要频繁地使用这个库,这样来回切换就不方便了。

我知道我可以简单地这样做:

- (void)drawRect:(CGRect)rect {
    call_cpp_function(rect);
}

但也许我可以完全在c++中定义方法?像这样:

void __magic_declaration__ MYView::drawRect(CPPTYPE(CGRect))
// note, this line is completely my own imagination, this is just to illustrate what I want.

这是可能的,如果不是你所说的令人愉快的话。在这个答案中,视图是用纯c语言构造和绘制的。

你不能这么做。你能得到的最接近的是从一个ObjC方法调用c++代码,正如你提到的。

从技术上讲,你可能能够破解一些东西,使用ObjC运行时API动态添加方法,但这会更笨重,更困难,更慢。

最新更新