これを動作させようとしていますが、どこかで間違いを犯したに違いありません。このCヘッダーごとに(ダウン切り取ら)Delegateクラスである:Xamarinで「インスタンスに送信されたセレクタが認識されない」例外が発生する
このため@protocol PaymentEngineMiddlewareDelegate <NSObject>
@required
/*!
@brief Delegate method for startTransaction.
@param transResponse - Contains all the transaction response info from the gateway
*/
-(void)transactionComplete :(PaymentEngineTransactionResponse *)transResponse;
@optional
/*!
@brief Delegate method for device connected. The method gets called when the device is connected
*/
-(void)deviceConnected;
/*!
@brief Delegate method for device disconnected. The method gets called when the device is disconnected
*/
-(void)deviceDisconnected;
@end
、私が持っている:
// @interface PaymentEngineMiddlewareDelegate : NSObject
[BaseType(typeof(NSObject))]
[Model]
[Protocol]
interface PaymentEngineMiddlewareDelegate
{
[Abstract]
[Export("transactionComplete:")]
void TransactionComplete(PaymentEngineTransactionResponse transResponse);
[Export("deviceConnected")]
void DeviceConnected();
[Export("deviceDisconnected")]
void DeviceDisconnected();
}
は次にPaymentEngineMiddlewareクラスに対して、ヘッダがこれを持っている:
@interface PaymentEngineMiddleware : NSObject
+ (PaymentEngineMiddleware *) getInstance;
@property(nonatomic, strong) id<PaymentEngineMiddlewareDelegate> delegate;
//------------------------------Device Methods------------------------------
/*!
@brief This method must be called before starting any transaction. Use it to connect to a device.
@param deviceName The name of the device such as icmp or castle
@param setDelegate Sets to self
*/
-(void)setDevice :(NSString *)deviceName :(id)setDelegate;
@end
そして、そのために、私が持っている:
// @interface PaymentEngineMiddleware : NSObject
[BaseType(typeof(NSObject))]
[Protocol]
interface PaymentEngineMiddleware
{
// +(id)getInstance;
[Static]
[Export("getInstance")]
PaymentEngineMiddleware GetInstance { get; }
[Export("delegate", ArgumentSemantic.Retain)]
PaymentEngineMiddlewareDelegate Delegate { get; set; }
[Export("setDevice:setDelegate:")]
void SetDevice(string deviceName, PaymentEngineMiddlewareDelegate setDelegate);
}
を10
コードで、私が "middleware.SetDevice( 'name'、this);をコールしようとすると、これはデリゲートを継承するクラスですが、例外があります。
私が逃した、または間違っていることは明らかですか?