调用绑定方法时未识别的选择器
本文关键字:识别 选择器 绑定 方法 调用 | 更新日期: 2023-09-27 18:24:50
我正在尝试将我创建的基本Objective-C库绑定到Xamarin项目。.h文件是:
#import <Foundation/Foundation.h>
@import UIKit;
@interface StarIOFunctions : NSObject {
}
+ (NSMutableData *)GetDataToSendToPrinter:(UIImage *)image;
@end
我尝试使用以下ApiDefinition:创建绑定
using System;
using System.Drawing;
using MonoTouch.ObjCRuntime;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
namespace BindingTake2
{
[BaseType (typeof (NSObject))]
interface StarIOFunctions {
[Export ("GetDataToSendToPrinter:image")]
NSMutableData GetDataToSendToPrinter (UIImage image);
}
}
一切都可以编译,但当我在应用程序中运行它时:
UIImage image = UIImage.FromBundle("image1.png");
StarIOFunctions functions = new StarIOFunctions ();
var output = functions.GetDataToSendToPrinter (image);
我的应用程序崩溃,出现以下错误:
Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[StarIOFunctions GetDataToSendToPrinter:image]: unrecognized selector sent to instance 0x7cdb50f0
现在,我认为这与我发送图像有关,而不是指向图像的指针——但我完全迷失了方向,无法弄清楚我到底做错了什么。
似乎在选择器名称中包含了参数名称,即
[Export ("GetDataToSendToPrinter:image")]
应该是:
[Export ("GetDataToSendToPrinter:")]
最后一列":"表示需要一个参数,但您不需要(在选择器中)命名它,因为前一个字符串应该暗示它。