针对Xamarin iOS错误的Objective-C库绑定
我正在绑定此Objective-C库-**以便在我的Xamarin iOS应用程序中使用 我在ApiDefinitions.cs文件中做了一些更改,在构建绑定项目时,我遇到了3个构建错误。错误反映在生成的文件针对Xamarin iOS错误的Objective-C库绑定,ios,xamarin.ios,cocoapods,Ios,Xamarin.ios,Cocoapods,我正在绑定此Objective-C库-**以便在我的Xamarin iOS应用程序中使用 我在ApiDefinitions.cs文件中做了一些更改,在构建绑定项目时,我遇到了3个构建错误。错误反映在生成的文件SPSlideTabBarProtocol.g.cs 以下是错误: 1. The modifier abstract is not valid for this item 对于这一行代码: [Export ("initWithTabBarItems:")] [CompilerGenerat
SPSlideTabBarProtocol.g.cs
以下是错误:
1. The modifier abstract is not valid for this item
对于这一行代码:
[Export ("initWithTabBarItems:")]
[CompilerGenerated]
public abstract SPSlideTabBarProtocol (SPSlideTabBarItem[] tabBarItems);
第二个错误:
2. cannot declare instance members in a static class <--- error right on this line
[CompilerGenerated]
public virtual SPSlideTabBarController SlideTabBarController {
[Export ("slideTabBarController", ArgumentSemantic.Retain)]
get {
SPSlideTabBarController ret;
if (IsDirectBinding) {
ret = Runtime.GetNSObject<SPSlideTabBarController> (global::ApiDefinition.Messaging.IntPtr_objc_msgSend (this.Handle, Selector.GetHandle ("slideTabBarController")));
} else {
ret = Runtime.GetNSObject<SPSlideTabBarController> (global::ApiDefinition.Messaging.IntPtr_objc_msgSendSuper (this.SuperHandle, Selector.GetHandle ("slideTabBarController")));
}
return ret;
}
}
2。无法在静态类中声明实例成员我已经能够通过以下方式解决这些错误:
1.The modifier abstract is not valid for this item
我要做的就是从定义中删除抽象属性,如下所示:
由此:
interface SPSlideTabBarProtocol
{
// @required -(instancetype)initWithTabBarItems:
(NSArray<SPSlideTabBarItem *> *)tabBarItems;
[Abstract]
[Export("initWithTabBarItems:")]
IntPtr Constructor(SPSlideTabBarItem[] tabBarItems);
为此:
interface SPSlideTabBarProtocol
{
// @required -(instancetype)initWithTabBarItems:(NSArray<SPSlideTabBarItem *> *)tabBarItems;
[Export("initWithTabBarItems:")]
IntPtr Constructor(SPSlideTabBarItem[] tabBarItems);
[BaseType(typeof(UIViewController))]
[Category]
interface UIViewController_SPSlideTabBarItem
{
// @property (nonatomic, strong) SPSlideTabBarItem * _Null_unspecified slideTabBarItem;
[Static] //<----static attribute added here
[Export("slideTabBarItem", ArgumentSemantic.Strong)]
SPSlideTabBarItem SlideTabBarItem { get; set; }
// @property (readonly, nonatomic, strong) SPSlideTabBarController * _Nullable slideTabBarController;
[Static] //<----static attribute added here
[NullAllowed, Export("slideTabBarController", ArgumentSemantic.Strong)]
SPSlideTabBarController SlideTabBarController { get; }
}
[BaseType(typeof(UIViewController))]
[类别]
界面UIViewController\u SPSLIDETABBRITEM
{
//@property(非原子,强)SPSlideTabBarItem*\u Null\u未指定的slideTabBarItem;
[静态]/对于2,您应该更改为:
// @interface SPSlideTabBarItem (UIViewController)
[Category]
[BaseType (typeof(UIViewController))]
interface UIViewController_SPSlideTabBarItem
{
// @property (nonatomic, strong) SPSlideTabBarItem * _Null_unspecified slideTabBarItem;
[Export ("slideTabBarItem")]
SPSlideTabBarItem Get_SlideTabBarItem();
[Export ("setslideTabBarItem:")]
void Set_SPSlideTabBarItem(SPSlideTabBarItem value);
// @property (readonly, nonatomic, strong) SPSlideTabBarController * _Nullable slideTabBarController;
[Export ("slideTabBarController")]
SPSlideTabBarController Get_SlideTabBarController()
}
这是因为C#只支持扩展方法,但ObjC中有扩展属性
[BaseType(typeof(UIViewController))]
[Category]
interface UIViewController_SPSlideTabBarItem
{
// @property (nonatomic, strong) SPSlideTabBarItem * _Null_unspecified slideTabBarItem;
[Export("slideTabBarItem", ArgumentSemantic.Strong)]
SPSlideTabBarItem SlideTabBarItem { get; set; }
// @property (readonly, nonatomic, strong) SPSlideTabBarController * _Nullable slideTabBarController;
[NullAllowed, Export("slideTabBarController", ArgumentSemantic.Strong)]
SPSlideTabBarController SlideTabBarController { get; }
}
[BaseType(typeof(UIViewController))]
[Category]
interface UIViewController_SPSlideTabBarItem
{
// @property (nonatomic, strong) SPSlideTabBarItem * _Null_unspecified slideTabBarItem;
[Static] //<----static attribute added here
[Export("slideTabBarItem", ArgumentSemantic.Strong)]
SPSlideTabBarItem SlideTabBarItem { get; set; }
// @property (readonly, nonatomic, strong) SPSlideTabBarController * _Nullable slideTabBarController;
[Static] //<----static attribute added here
[NullAllowed, Export("slideTabBarController", ArgumentSemantic.Strong)]
SPSlideTabBarController SlideTabBarController { get; }
}
// @interface SPSlideTabBarItem (UIViewController)
[Category]
[BaseType (typeof(UIViewController))]
interface UIViewController_SPSlideTabBarItem
{
// @property (nonatomic, strong) SPSlideTabBarItem * _Null_unspecified slideTabBarItem;
[Export ("slideTabBarItem")]
SPSlideTabBarItem Get_SlideTabBarItem();
[Export ("setslideTabBarItem:")]
void Set_SPSlideTabBarItem(SPSlideTabBarItem value);
// @property (readonly, nonatomic, strong) SPSlideTabBarController * _Nullable slideTabBarController;
[Export ("slideTabBarController")]
SPSlideTabBarController Get_SlideTabBarController()
}