0

我看到了一个类似的问题,涉及使用不透明类型,但我不太了解示例代码。

我有一些有效的代码......我有几个 C++ 数据对象作为实例变量存储在我的控制器中。我想符合 MVC,并将所有这些推送到模型对象中,而不是我的控制器中。

所以我现在的作品看起来像:

@interface WinController : NSWindowController <NSWindowDelegate>
{
    cv::Mat object;
}
- (void)setObject:(const cv::Mat&)newObject;
@end

@implementation

- (void)setObject:(const cv::Mat&)newObject
{
    object = newObject;
}
@end

这个setObject:方法被另一个类的方法调用:

- (void)constructObject
{
    cv::Mat object = cv::Mat::zeros(3,3,CV_64F);
    [myController setObject:object];
}

因此,我将 C++ 对象移出控制器并移入模型类。和@interface完全@implementation一样。只是复制并粘贴到不同的类中。

constructObject:方法更改为:

- (void)constructObject
{
    cv::Mat object = cv::Mat::zeros(3,3,CV_64F);
    [myController.myModel setObject:object];
}

现在当我编译时,我收到一个新警告: Instance method '-setObject:' not found. (return type defaults to 'id')

很明显,我错过了为什么方法#1有效而#2无效的一些微妙之处。

4

0 回答 0