Xamarin.iOS上的Swift框架-已抛出Foundation.MonoTouchException

时间:2019-07-10 07:17:59

标签: c# swift binding xamarin.ios

Xamarin iOS应用程序在运行swift框架时崩溃。

在我的.framework中-Swift类

import Foundation

@objc(Member)
open class Member: NSObject {

    @objc
    func getMemberID() -> String {
        return "Hii, This is member code .framework"
    }
}

我已经为模拟器iPhone7 构建了一个框架,并在 Visual Studio Xamarin.iOS

上的本机框架中添加了它。

我已经为接口类进行了手动编码。

using System;

using ObjCRuntime;
using Foundation;
using UIKit;

namespace CustomLibrary {

    [BaseType(typeof(NSObject))]
    interface Member
    {
        [Export("getMemberID")]
        string MemberID { get; }
    }
}

之后,我将绑定库的引用添加到iOS App项目中。

enter image description here

在ViewController中,我已导入绑定库并分配一个类并在日志中打印。

using System;
using UIKit;
using CustomLibrary;

namespace SwiftFrameworkApp
{
    public partial class ViewController : UIViewController
    {
        public ViewController(IntPtr handle) : base(handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.

            Member memberObj = new Member();
            System.Diagnostics.Debug.Print(memberObj.MemberID());
        }

        public override void DidReceiveMemoryWarning()
        {
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.
        }
    }
}

当我建立一个项目时。已显示

  

错误0和警告1

enter image description here

之后,当我运行一个项目时。应用已在模拟器中启动,并因以下错误而崩溃。

enter image description here

1 个答案:

答案 0 :(得分:1)

我的意思是在您的Member界面中,应该是这样的:

[BaseType(typeof(NSObject))]
interface Member
{
    [Export("getMemberID")]
    string GetMemberID ();
}