(7) 引用Objective-C class library

原文 引用Objective-C class library

这个范例是如何在Xamarin.ios中去使用一个我们自行在Xcode中开发的Objective-c Class Library. 主要会执行的步骤如下

  1. 在Xcode 里面去建立一个Class Library
  2. 编译这个Class Library让他同时支持IOS Device与 iOS simulator
  3. 使用Objective Sharpie Tool建立Matadata
  4. 在Xamarin中建立IOS Binding Project
  5. 在Xamarin IOS APP 项目中参考 IOS Binding Project.

1. 在X-Code里面建立一个Static class Library

1.1在xode里面建立一个Static class Library , 命名为[sharecode]

  • 在sharecode.h档案中宣告一个名称为test的方法,并且让这个方法回传一个NSString

sharecode.h
#import <Foundation/Foundation.h>
@interface sharecode : NSObject{
}
- (NSString *)test;
@end

  • 在sharecode.m档案中实作这个 - (NSString *)test 方法,让他回传一个字符串

sharecode.m
#import "sharecode.h"
@implementation sharecode
-(NSString *) test{
return @"Hello Binding";
}
@end

1.2在命令提示字符接口中以Xcodebuild编译这个项目
预设static library编译后只能给ARM架构 的IOS Device 执行, 由于iOS仿真器属于X86架构, 因此需要再编译一份程序让仿真器执行. 请在终端机接口中用xcodebuild指令来产生相对应的档案

  • 产生iOS simulator 用的档案
    xcodebuild -sdk iphonesimulator -configuration Debug
  • 产生 IOS Device 用的档案
    xcodebuild -sdk iphoneos -arch armv7 -configuration Debug

1.3使用lipo指令将.a档案包成一个单一档案
将上一个步骤产生出来的档案透过lipo指令打包成一个单一档案.范例程序请参考下方
lipo -create -output libsharecode.a libsharecode-armv7.a libsharecode-i386.a

lipo -create -output test.a ./build/ Debug-iphoneos/ libtest.a ./build/Debug-iphonesimulator/ libtest.a

2. 使用Objective Shapie tool建立头文件

2.1 下载objective sharpie tool

2.2 选择Header File 这个步骤要去选择到我们在Xcode里面开发的class library [sharecode] 里面的interface档案.[Sharecode.h] 选择完毕后按[Next]进到下一步.

2.3 指定Namaspace. 这里需要指定namespace名称 , 在后面Xamarin.ios项目会依据这个namespace来参照到你的Class library..

2.4 储存metadata档案. 指定Namespace后, Objective sharpie会自动建立一个Metadata档案.这时选择你想要储存的地方来储存这的档案.

3. 建立Xamarin IOS binding project

3.1在Xamarin里面新建一个IOS Binding项目 
这个项目是用来Binding用Xcode开发出来的Class Library. 在建立Xamarin项目时选择Xamarin >> New >> IOS >> IOS Binding Project

3.2调整iOS Binding 项目 
3.2.1 修改 ios xcode binding 项目的ApiDefinition.cs 
将刚刚由Objective sharpie帮我们建立的Matadata档案内容复制到ios xcode binding里面的ApiDefinition.cs

3.2.2 在ApiDefinition.cs档案中有两个地方要做修正.

  1. 删除 [Export] 里面的 Verify片段. 
    Verify ("ObjC method massaged into getter property","/Users/benlu/Projects/Xamarin_ios_lab/BindingObjective-c/sharecode/sharecode/sharecode.h", Line = 15)

删除后的结果如下:

2.确认在Public partial interface 后面的名称大小写与我们在Xcode 中建立的Class library名称是一样的.

3.3在IOS Binding项目中把Xcode class library中编译 .a的项目加进来然后编译这个项目

4.建立Xamarin IOS 项目

4.1在Xamarin里新建一个IOS iPhone专案 这边选择Xamarin >> New >> IOS >>IPhone storyboard >>Single View Application, 然后在Xamarin项目里面将IOS Binding project 中的dll档案加进参考

4.2 这时就可以在Xamarin IOS iPhone 项目里面参考并使用在Xcode中开发的objective-c class library

 

其他相关参考网站

时间: 2024-07-29 18:41:15

(7) 引用Objective-C class library的相关文章

intellij-android studio如何引用project(不是导入module)?

问题描述 android studio如何引用project(不是导入module)? 我是从eclipse转过来的, 手头有很多自己写的project/demo, 很多都依赖一个自己整理的library, 因为eclipse有workset, 我把所有的项目都放在一个workspace里面, workset划分demo/project/library, 然后所有的项目只需要引用library就好了.... 因为library还在不断的扩充修改, 经常项目写着写着就去library改一改, 其他

Asp基础教程(下)

基础教程|基础教程 四.Asp组件的开发与使用: 1. 组件的特点? l 优点:n 调用方便,节省代码n 安全性高n 支持事务处理,多组件联合n 运行速度快n 升级.修改组件不需修改页面,因此扩展性好l 缺点:n 开发及调试困难 2. 如何使用VB开发? ⑴.打开VB>>New Project>>ActiveX DLL ⑵.修改项目名称为course ⑶.修改类模块的名字为conn_db ⑷.Project>> References,引用COM+ Service Typ

c#封装jmail的pop3收邮件

jmail|封装|收邮件 *w3 JMail v4.4 Professional 的获取请自行 google!或参阅 http://community.csdn.net/Expert/TopicView.asp?id=3739405w3 JMail v4.4 Professional 是一个 COM 的组件,我用 C# 把其 POP3 COM 类封装成一个用于收取邮件的 .Net 组件:实现了 //同步事件  public event MessagesEventHandler MessageRe

Asp深度揭密(下)

四.Asp组件的开发与使用: 1. 组件的特点? l 优点:n 调用方便,节省代码n 安全性高n 支持事务处理,多组件联合n 运行速度快n 升级.修改组件不需修改页面,因此扩展性好l 缺点:n 开发及调试困难 2. 如何使用VB开发? ⑴.打开VB>>New Project>>ActiveX DLL ⑵.修改项目名称为course ⑶.修改类模块的名字为conn_db ⑷.Project>> References,引用COM+ Service Type Library和

Asp深度揭密

一.Asp基本知识 1.Asp是Active Server Pages的简称,是解释型的脚本语言环境: 2.Asp的运行需要Windows操作系统,9x下需要安装PWS:而NT/2000/XP则需要安装Internet Information Server(简称IIS): 3.Asp和JSP的脚本标签是"<%%>",PHP的则可以设定为多种: 4.Asp的注释符号是"'": 5.使用附加组件,可以扩展Asp的功能. 例子: HelloWorld_1.as

在VB.NET中应用SQLDMO

SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装 Microsoft SQL Server 2000 数据库中的对象.SQL-DMO 允许用支持自动化或 COM 的语言编写应用程序,以管理 SQL Server 安装的所有部分.SQL-DMO 是 SQL Server 2000 中的 SQL Server 企业管理器所使用的应用程序接口 (API):因此使用 SQL-DMO 的应用程序可以执行 SQL Server 企业管理器执行的所

如何列举网络中的SQL-Server服务器

server|服务器|网络 自己制作了一个类似ODBC登陆的SQL-Server服务器登陆的窗口(如下图),里面包含服务器名称.数据库名称.用户名.密码.连接等待时间....这里讲解一下其中"Server"项,用复合框下拉列表列举网络中SQL-Server服务器名称的实现.(至于如何列举服务器中的数据库名称,论坛中有很多帖子可搜索一下,方法和这个差不多) 首先需要引用SQLDMO.方法:在"工具"-"引用"中引用 Microsoft SQLDMO

用ASP.NET(VB版)创建WINDOWS 2000 SERVER站点

asp.net|server|window|创建|站点 用ASP.NET(VB)创建的WEB站点,我们的调用方式非常简单:Dim test As New Class1()test.CreateWebSit(webname,port, "D:\VB", "localhost") 下面是Class1的代码,该代码做的工作就是建立站点,如果有此站点的名称则自动覆盖(注意:本类需要引用Actice DS Type Library)Public Class Class1 用l

用VB.NET和Excel排生产计划--企业信息化探讨之一

excel 用VB.NET和Excel排生产计划 -企业信息化探讨之一 屠恩海(SunHai) 开发工具:Microsoft Visual Studio .NET 2003 操作系统:Windows XP 企业信息化失败原因探讨 中国企业上线ERP的成功率是不高的.这是为什么呢? 实用的ERP系统有两个特征: 1. 要求具有高度的定制性 2. 要能根据企业实际随时修改ERP系统 而现在企业的ERP系统开发基本采用外包模式,开发人员虽然也可以深入公司各个部门,掌握各个方面信息,然后进行定制开发.但

用VB.NET和Excel排生产计划

excel 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 http://www.Tuenhai.com/ 开发工具:Microsoft Visual Studio .NET 2003 操作系统:Windows XP 企业信息化失败原因探讨 中国企业上线ERP的成功率是不高的.这是为什么呢? 实用的ERP系统有两个特征: 1. 要求具有高度的定制性 2. 要能根据企业实际随时修改ERP系统 而现在企业的ERP系统开发基本采用外包模式,开发人员虽然也可以深入公司