【发布时间】:2011-12-28 09:29:26
【问题描述】:
我在 xcode 中有一个简单的静态库,只有一个类 测试.h:
@interface TestClass : NSObject {
NSString *SomeString;
}
@property(nonatomic, readwrite, copy) NSString *SomeString;
- (NSString *) getString;
- (int) getInt;
@end
test.m:
@implementation TestClass
@synthesize SomeString;
- (id)init
{
if ((self = [super init]) == nil)
return nil;
SomeString = @"test string value";
return self;
}
- (NSString *) getString {
return @"Lorem ipsum dolor sit amet";
}
- (int) getInt {
return 123;
}
@end
我从 btouch 生成的 dll 中复制了 TstClass。如果我使用的是原始 dll 的实现:
[Register ("TestClass", true)]
public class TstClass : NSObject
变量 Handle、ClassHandle 等是空值,但应用程序运行并以 getInt、getString 和 SomeString 形式返回空值。如果我将定义更改为
[Register ("TestClass")]
public class TstClass : NSObject
内部变量有效(意味着不为空),但当我尝试调用 TstClass 的函数时,应用程序崩溃且没有输出。
在我的研究过程中,我发现有人通过取消选中 XCode 构建设置中的“thumb”选项来解决此问题,但我在 xcode 项目中找不到任何看起来像 thumb 的东西。 (以防万一:XCode 4.2 build 4C199;我使用的是最新版本的 Monotouch)
如何在 xcode 中创建静态库并将其与 monotouch 一起使用?我的代码有什么问题?
最后一个问题:我有一个 .a 和它的 .h 文件。有没有更简单的方法从库和头文件生成绑定?
【问题讨论】:
标签: c# objective-c ios binding xamarin.ios