我看到了一个类似的问题,涉及使用不透明类型,但我不太了解示例代码。
我有一些有效的代码......我有几个 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无效的一些微妙之处。