我是一名目标C新手,所以请原谅不正确的术语。
在Xamarin.iOS中,我成功地使用了带有多个静态方法的C#类来实现从Objective-C到C#的回调功能。我想避免创建绑定库(不想使用Sharpie和相关工具/步骤)。我正在为Objective-C寻找一种回调C#中非静态方法的方法。 Objective-C是否可以回调非静态Xamarin.iOS C#方法?我的Objective-c至C#的回调技术如下,并在下面进行进一步说明:
使用该技术,我可以将我的C#“回调”类实例视为Objective-c中的@interface实例。在Objective-c中,我可以将C#类实例中的方法视为@interface实例方法来调用它们。
在C#中>>
Objective-c
使用此技术,我可以将C#类句柄用作Objective-C中的协议ID,并引用C#类作为Objective-C中的@interface。
是否可以使用相同(或相似)方法(将类句柄从C#传递到Objective-c,并使用该类句柄作为委托)从Objective-c调用非静态C#方法?
// C# "call-back" class [Register("AppDelegate")] public class AppDelegate : NSObject { [Export("OnLoginSucceeded:")] public static void OnLoginSucceeded(string sessionToken) { // Do stuff } [Export("OnRequestFailed")] public static void OnRequestFailed() { // Do stuff } [Export("OnConnectionFailed")] public static void OnConnectionFailed() { // Do stuff } public IntPtr GetInstancePointer() { IntPtr self = Class.Handle; return self; } } // objective-c protocol for C# "call-back" class #import <Foundation/Foundation.h> @protocol AppDelegate <NSObject> - (void)OnLoginSucceeded : (NSString*)sessionToken; - (void)OnRequestFailed; - (void)OnConnectionFailed; @end // objective-c calls to C# callback [self.appDelegate OnLoginSucceeded : response.sessionToken]; [self.appDelegate OnRequestFailed]; [self.appDelegate OnConnectionFailed];
我是一位目标C新手,所以请原谅不正确的术语。在Xamarin.iOS中,我成功地使用具有多个静态方法的C#类来实现回调功能...
objective-c是否可以回调到非静态Xamarin.iOS C#方法?