我尝试绑定的代码在其中一个.h文件中放置了一个非常重要的键:
#define xAppKey @"REPLACE_WITH_YOUR_APP_KEY"
然后在整个ObjC代码中重用该值。我怀疑在绑定过程中,这个值没有贯彻。根据SO上的其他几个主题,至少似乎就是这种情况。我的问题可能是其他问题,还是有可能在包装的代码中没有兑现这个值?
对不起,如果我的目标c术语已关闭,我对此一无所知。
修改
我只想澄清一些可能不明显的事情。通过"绑定"我指的是将它绑定到monotouch作为本机库。如果已经清楚了,继续......
答案 0 :(得分: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);
这不会编译。
答案 1 :(得分:2)
在Obj-C #define
中拥有.h
的目的是允许它由利用库的应用程序替换。在这种情况下,您的(Obj-C)库可能仅作为源分发。
但是你想为它创建(Xamarin.iOS)绑定。所以你需要编译这个库,并且编译将一劳永逸地修复xApiKey
的值。
您的目标可能是通过Xamarin.iOS将此xApiKey
公开给消费者应用程序。您必须修改Obj-C
库以使用属性而不是常量,然后通过Xamarin.iOS
绑定(静态)属性访问器