当前位置: 首页 > 知识库问答 >
问题:

绑定iOS嵌入式框架Xamarin END UP给例外?

齐弘业
2023-03-14

请帮我最后一步。谢谢。

我正在测试将iOS本机框架绑定到Xamarin库。

>

  • 我创建了iOS框架并添加了MyView. h, MyView. m

    • MyView. m

    (instancetype)initWithFrame:(CGRect)帧{id p=[超级initWithFrame:frame];self.backgroundColor=[UIColor greenColor];
    返回p;}

    • MyView. h

    @接口MyView:UIView@结束

    非常简单的框架。

    添加MyView。h转换为公共标题,并为任何架构创建通用框架。此框架现在具有

    firstfile. h, MyView. h

    两个文件作为公共标头

    我创建了iOS测试应用程序(单个VC应用程序),并尝试了这个框架。

    MyView*v=[[MyView alloc]initWithFrame:CGRectMake(0,0,100,100)];[self.view addSubview:v];

    它像我预期的那样工作。它画了一个绿色的盒子。

    我创建了Xamarin库项目,并通过单击鼠标右键并添加文件将此框架文件导入到本机引用文件夹中

    将此行添加到ApiDefinition。Xamarin库中的cs

    [基类型(typeof(UIView))]html" target="_blank">接口MyView{[导出(“initWithFrame:”)]IntPtr构造函数(CGRect frame);}

    构建正常。

    我创造了Xamarin。iOS应用程序并将此库导入解决方案并对其进行测试。

    MyView v=新的MyView(新的CGRect(0,0,100,100));这看法添加子视图(v);

    构建OK!但运行时错误。

    调用的目标引发了异常。

    因为我是CSharp和mono的新手。来这里不容易,你能帮我一点忙吗?

    我的线索是应该有东西指向我的观点。第5步中的h。但我不知道那里应该有什么。

    我的完整源代码在这里:https://github.com/myallb/test_iosstaticlib_to_xamarin

    这段代码使用的是静态库而不是框架。我在尝试不同的选择。

  • 共有1个答案

    庞书
    2023-03-14

    框架绑定示例。。。。

    • 添加名为MyView的新Cocoa Touch类子类化UIView:

    <代码>MyView。h:

    #import <UIKit/UIKit.h>
    
    @interface MyView : UIView {
    }
    
    @end
    

    <代码>MyView。m:

    #import "GreenView/MyView.h"
    
    @implementation MyView
    
    - (void)baseInit {
        self.backgroundColor = [UIColor greenColor];
    }
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            [self baseInit];
        }
        return self;
    }
    
    - (id)initWithCoder:(NSCoder *)aDecoder {
        if ((self = [super initWithCoder:aDecoder])) {
            [self baseInit];
        }
        return self;
    }
    
    @end
    

    GreenView. h

    #import <UIKit/UIKit.h>
    
    FOUNDATION_EXPORT double GreenViewVersionNumber;
    FOUNDATION_EXPORT const unsigned char GreenViewVersionString[];
    
    #import "MyView.h"
    
    sharpie bind 
       -sdk iphoneos9.3 
       -o GreenViewBinding 
       GreenView.framework/Headers/*.h
    
    • 添加绿色视图。作为本机引用的框架

    ApiDefinition。cs

    using UIKit;
    
    namespace GreenViewBinding
    {
        // @interface MyView : UIView
        [BaseType(typeof(UIView))]
        interface MyView
        {
        }
    }
    

    >

    添加绑定项目作为引用。

    视图控制器。cs方法:

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        var view = new GreenViewBinding.MyView();
        view.Frame = new CoreGraphics.CGRect(40, 40, 100, 100);
        Add(view);
    }
    
     类似资料:
    • 我试图在Xamarin iOS上使用来自BLE chip bender(北欧)的原生iOS框架。此框架(iOS Native-Swift):https://github.com/nordicsemiconductor/iOS-dfu-library/tree/master/documentation > 我用那些iOS库做了一个胖框架。我看了这位医生。https://developer.xamar

    • 我们正在使用ApacheFelix(版本4.4.1)作为嵌入式OSGi框架。提供该框架的主要应用程序使用作为日志框架。存在对log4japi和log4jcore的依赖。当然,当主应用程序启动时,也会加载和配置Log4j2。主部件中触发的所有日志消息都正确写入已配置的Appender。 现在是重点。加载的所有bundle都应该能够使用与主应用程序相同的配置和日志上下文。我试图做的是提供所有Log4j

    • 问题内容: 我已经嵌入了Felix。我有一些API捆绑包和Impl。API导出接口。Impl导入该接口并在激活器中注册impl。现在我要获取C隐含的OSGi 现在,我想与它进行交互。我可以反思 但是我不能投 我猜这来自不同的ClassLoader。但是我该如何解决呢?我们如何从外部与OSGi上下文进行交互?或者我们可以将其全部放入OSGi容器中? 问题答案: 如果要嵌入OSGi,则该服务的API(

    • 我正在学习《行动中的Spring》第四版第5章,但是我被第一个例子困住了。 以下是我的Eclipse Luna项目结构: 如果我将此项目作为Spring Boot应用程序运行,则会引发异常: 我怎样才能解决这个问题? 所有文件的内容: 随地吐痰。爪哇: SpittrWebAppInitializer.java: 网络配置。爪哇: RootConfig。爪哇: HomeController.java

    • 在一个PC游戏中,我有ingame浏览器用于新闻、虚拟货币商店和社交网络。它是由Chromium嵌入式框架的全新更新构建的。问题是当我打开一个浏览器窗口(网站在那里工作良好),然后关闭,对于某些网站CEF子进程没有完成。我也可能继续听音频,如果是Youtube视频,例如。我使用的是屏幕外呈现,其他原生窗口不创建,只创建子进程。要关闭浏览器窗口,我删除对CefBrowser的所有引用并调用: 我还尝

    • 我使用jaxb 3.0.0(xjc.sh)来创建Java类,但出于某种原因,它不尊重嵌入式绑定。jaxb 2.3.1也可以正常工作 $pwd/c/jaxb-ri-3.0.0/jaxb-ri/bin xjc.shValidation.xsd 它正在创建ApiValidator。java,我希望它不会创建一个新的绑定,而不是引用我作为嵌入绑定的绑定。 a/model/ApiValidator。java