结合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苹果连接有问题联拇指图书馆入更大的项目。

你可以禁用拇指指模式,通过打开你的地图书馆的模式和做如下:

  1. 项目>编辑项目设置
  2. 类型"拇指"中的"搜索在建立设置"
  3. 取消盒
  4. 重建土库。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top