结合ObjectiveC类至C#问题
-
27-09-2019 - |
题
结合ObjectiveC类至C#问题
然而,文档中没有提到的项目介绍如何结合的目标-C类型的用于与然而,文档中没有提到的.我们未能这样做的冬季圣诞雪景图书馆(另见的 然而,文档中没有提到的是,结合对冬季圣诞雪景的博客在sabonrai点wordpress dot com.
所以我们决定创造尽可能最小的试验项目。我们写一个简单的objc班有两个简单的方法之一,返回的一串,返回一个整数。
这里的TstLib.h:
#import <Cocoa/Cocoa.h>
@interface TstCls : NSObject {
}
- (NSString *) Version;
- (int) GimmeAnInt;
@end
和TstLib.m文件:
#import "TstCls.h"
@implementation TstCls
- (NSString *) Version {
return @"I ain't got a version, I'm a poor lonesome cowboy...";
}
- (int) GimmeAnInt {
return 110646;
}
@end
我们已经有了一个小objc控制台项目来验证这个图书馆。这里的代码:
#import <Cocoa/Cocoa.h>
#import "../TstLib/TstCls.h"
int main(int argc, char *argv[])
{
TstCls* tstCls = [[TstCls alloc] init];
NSLog(@"version = %@", [tstCls Version]);
NSLog(@"the int = %d", [tstCls GimmeAnInt]);
return NSApplicationMain(argc, (const char **) argv);
}
因此,让我们来定义的结合文件btouch实用工具。
using MonoTouch.Foundation;
namespace TstLib {
[BaseType (typeof (NSObject))]
interface TstCls {
[Export ("Version")]
string Version ();
[Export ("GimmeAnInt")]
int GimmeAnInt ();
}
}
然后,我们创建一个libTstLib.一个又一个的TstLib.dll 文件的btouch实用工具:
/Developer/MonoTouch/usr/bin/btouch -o TstLib.dll TstCls.cs
我们现在创建一个新的然而,文档中没有提到的基于窗口的iphone应用程序'ApiTest',添加一个Lib directory与libTstLib.一个和TstLib.dll 文件中,添加一个参考这个TstLib.dll 和把我们的TstLib入主要的。cs:
using System;
using System.Collections.Generic;
using System.Linq;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
using TstCls;
namespace ApiTest
{
// -gcc_flags "-L${ProjectDir}/Lib -lTstLib -ObjC"
// or
// -gcc_flags "-L${ProjectDir}/Lib -lTstLib -force_load ${ProjectDir}/Lib/libTstLib.a"
public class Application
{
static void Main (string[] args)
{
UIApplication.Main (args);
}
}
// The name AppDelegate is referenced in the MainWindow.xib file.
public partial class AppDelegate : UIApplicationDelegate
{
// This method is invoked when the application has loaded its UI and its ready to run
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
// If you have defined a view, add it here:
// window.AddSubview (navigationController.View);
TstLib.TstCls tstCls = new TstLib.TstCls ();
Console.WriteLine ("TstLib.TstCls.Version() -> '{0}'", tstCls.Version ());
Console.WriteLine ("TstLib.TstCls.GimmeAnInt() -> '{0}'", tstCls.GimmeAnInt ());
window.MakeKeyAndVisible ();
return true;
}
// This method is required in iPhoneOS 3.0
public override void OnActivated (UIApplication application)
{
}
}
}
这一点项目运行没有两个控制台。有的发言。它会崩溃,没有任何输出作为一个控制台。例如,报表是执行。
我们试图尽可能简短,仍提供了足够的信息来重新试验情况。我们非常愿意提供的任何额外信息,以帮助解决这个问题。
没有任何人看出为什么这个不工作的期望吗?我们限制自己最低限度,以试验我们是否能够提供和使用的结合为一个最小的ObjC类。
不幸的是它将失败。和它无法以同样的方式作为MT_SampleAdMob项目中描述然而,文档中没有提到的是,结合对冬季圣诞雪景的博客。
我们的小项目使用的btouch方法描述然而,文档中没有提到点网在标题Binding_New_Objective-C_Types而MT_SampleAdMob项目使用的手册'的方法说明在同一位置。
这两种方法都无法在一个类似的问题。尽快作为一个类或方法的实例是被称为,该程序只是崩溃,没有任何输出。
我们不知道可以做什么来确定这个问题,并得出一个解决方案。然而,文档中没有提到的是,提供c#绑定的许多ObjC类,因此它必须是可能的。我们已经仔细地研究了然而,文档中没有提到的是,引用的文档以上。我们看不到在那里的MT_SampleAdMob或这btouch办法将偏离规定的程序,但都失败!
所以真的,我们迫切需要一些帮助,在这里...
解决方案
你可能并没有禁用拇指指模式对于你的地图书馆。自从iOS SDK3.0苹果连接有问题联拇指图书馆入更大的项目。
你可以禁用拇指指模式,通过打开你的地图书馆的模式和做如下:
- 项目>编辑项目设置
- 类型"拇指"中的"搜索在建立设置"
- 取消盒
- 重建土库。