1

我试图绑定的代码在 .h 文件之一中放置了一个非常重要的键:

#define xAppKey @"REPLACE_WITH_YOUR_APP_KEY"

然后在整个 ObjC 代码中重用该值。我怀疑在绑定过程中,这个值没有通过。基于 SO 上的其他一些线程,至少似乎是这样。我的问题可能是其他问题,还是有可能在包装代码中没有兑现这个值?

很抱歉,如果我的 Objective-C 术语不正确,我对此一无所知。

编辑

我只是想澄清什么可能不明显。通过“绑定”,我指的是将其绑定到作为本机库的 monotouch。如果这已经很清楚了,请继续...

4

2 回答 2

4

xAppKey 是一个宏。它根本不会被束缚。相反。在预编译时,它将被替换为@"REPLACE_WITH_YOUR_APP_KEY"然后编译,就好像这个字符串一直在重复一样。

正是出于这个原因,一些专家建议用常量字符串替换它们。这些专家可能是对的。但是,我喜欢#define。

正是出于这个原因,您不应该在#define 语句中添加任何注释。

#define xAppKey @"REPLACE_WITH_YOUR_APP_KEY" // This is the application key

这样的事情几乎肯定会导致编译时错误,这可能很难理解。例子:

NSLog (@"%@", xAppKey); 

没有注释也可以正常工作,因为它将被转换为:

NSLog (@"%@", @"REPLACE_WITH_YOUR_APP_KEY"); 

但随着评论,它将被转换为:

NSLog (@"%@", @"REPLACE_WITH_YOUR_APP_KEY" // This is the application key);

这不会编译。

于 2013-03-11T23:54:27.170 回答
2

#define在 Obj-C 中包含a的.h目的是允许它被利用该库的应用程序替换。在这种情况下,您的 (Obj-C) 库可能仅作为源分发。

但是您想为它创建 (Xamarin.iOS) 绑定。所以你需要编译这个库,编译会xApiKey一劳永逸地修复它的值。

您的目标可能是xApiKey通过 Xamarin.iOS 将其公开给消费应用程序。您必须修改Obj-C库以使用属性而不是常量,然后通过绑定(静态)属性访问器Xamarin.iOS

于 2013-03-12T09:05:20.413 回答