【发布时间】:2019-07-10 07:17:59
【问题描述】:
Xamarin iOS 应用在运行 swift 框架时崩溃。
在我的 .framework - Swift 类中
import Foundation
@objc(Member)
open class Member: NSObject {
@objc
func getMemberID() -> String {
return "Hii, This is member code .framework"
}
}
我已经为 simulator iPhone7 构建了一个框架,并在 Visual Studio Xamarin.iOS
上添加了 Native 框架我已经为接口类手动编码。
using System;
using ObjCRuntime;
using Foundation;
using UIKit;
namespace CustomLibrary {
[BaseType(typeof(NSObject))]
interface Member
{
[Export("getMemberID")]
string MemberID { get; }
}
}
之后,我将 Binding 库的引用添加到 iOS App 项目。
在 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
之后当我运行一个项目时。应用程序在模拟器中启动并崩溃并出现以下错误。
【问题讨论】:
-
你应该在成员接口中实现getmemberID()。查看stacktrace,项目中找不到getmemberID()。
-
在我的项目中我已经实现了 getmemberID() 请检查问题代码
-
swift 中的 getmemberID() 是一种方法,您将其转换为 Xamarin.iOS 中的属性。您也应该将其绑定为方法。见这里:binding-methods
-
它对你有用吗?
-
那么,您能否将其标记为答案,以便我们可以帮助更多有同样问题的人。如果您在 Xamarin.iOS 应用程序上从 .framework 呈现 ViewController 时遇到问题,您可以打开一个新线程并在那里添加您的代码,我们将为您提供支持。
标签: c# swift binding xamarin.ios