我只是想知道为什么绑定iOS项目中的委托必须使用BaseType(typeof(NSObject))属性,当它的iOS对应物不使用NSObject时
iOS代码:
@protocol TestDelegate
- (void)onSuccess:(NSString*)token;
@end
@interface Utility : NSObject
@property (nullable, weak, getter = getTestDelegate, setter = setTestDelegate:) id<TestDelegate> delegate;
@end
添加了代理事件映射的Sharpie代码:
[Protocol, Model]
public interface TestDelegate
{
[Export ("onSuccess:")]
void OnSuccess (string token);
}
[BaseType(typeof(NSObject),
Delegates = new string[] { "WeakDelegate" },
Events = new Type[] { typeof(TestDelegate) })
public interface Utility
{
[Wrap ("WeakDelegate")]
[NullAllowed]
TestDelegate Delegate { [Bind ("getTestDelegate")] get; [Bind ("setTestDelegate:")] set; }
[NullAllowed, Export ("delegate", ArgumentSemantic.Weak)]
NSObject WeakDelegate { [Bind ("getTestDelegate")] get; [Bind ("getTestDelegate:")] set; }
}
Sharpie在TestDelegate上未生成BaseType属性,因为iOS本机代码未使用<NSObject
&gt;在其协议中。
这失败了“类型或名称空间名称TestDelegate' does not exist in the namespace
测试”。您是否缺少程序集引用?(CS0234)(Test.iOS)“。
当我在TestDelegate之上添加[BaseType(typeof(NSObject))]时,它就像魅力一样。
问题是为什么需要这个?