2014-09-27 124 views
0

我想将我创建的基本Objective-C库绑定到Xamarin项目。 .h文件是:调用绑定方法时无法识别的选择器

#import <Foundation/Foundation.h> 
@import UIKit; 

@interface StarIOFunctions : NSObject { 

} 

+ (NSMutableData *)GetDataToSendToPrinter:(UIImage *)image; 

@end 

我试图创建我有以下ApiDefinition结合:

UIImage image = UIImage.FromBundle("image1.png"); 
StarIOFunctions functions = new StarIOFunctions(); 
var output = functions.GetDataToSendToPrinter (image); 

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); 
    } 
} 

一切编译,但是当我在我的应用程序运行

我的应用程序崩溃,出现以下错误:

Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[StarIOFunctions GetDataToSendToPrinter:image]: unrecognized selector sent to instance 0x7cdb50f0 

现在,我认为它与发送图像有关,而不是指向图像的指针 - 但我完全迷失了方向,无法弄清楚我做错了什么。

回答

2

您似乎包括选择名称的参数名称,即

[Export ("GetDataToSendToPrinter:image")] 

应该是:

[Export ("GetDataToSendToPrinter:")] 

的最后一列“:”说明一个参数是需要 - 但你不需要命名它(在选择器中),因为前面的字符串应该暗示它。

相关问题