Xamarin.ios 单触式装订-从单独的收割台装订#DEF
我正在绑定一个ObjC库,它运行得很好,但我有一个问题。 ObjC库正在使用在单独的标头中定义的一些值 例如,具有以下内容的标题:Xamarin.ios 单触式装订-从单独的收割台装订#DEF,xamarin.ios,Xamarin.ios,我正在绑定一个ObjC库,它运行得很好,但我有一个问题。 ObjC库正在使用在单独的标头中定义的一些值 例如,具有以下内容的标题: #define SOME_PROPERTY_1 TRUE #define SOME_PROPERTY_2 TRUE #define SOME_PROPERTY_3 FALSE 根据这些属性,库将对视图进行一些更改(因此这些更改在库中,而不是在我的C#代码中) 我想从我的C#代码中访问这些属性,以便可以更改它们。现在,如果我想更改它们,但无法动态更改它们(目标是什么
#define SOME_PROPERTY_1 TRUE
#define SOME_PROPERTY_2 TRUE
#define SOME_PROPERTY_3 FALSE
根据这些属性,库将对视图进行一些更改(因此这些更改在库中,而不是在我的C#代码中)
我想从我的C#代码中访问这些属性,以便可以更改它们。现在,如果我想更改它们,但无法动态更改它们(目标是什么),我需要重新构建库
这可能吗
我已经对此进行了搜索,但我不了解两个建议的解决方案:
@interface SomeController : UIViewController
然后在“SomeController.m”中
#import "Constants.h" //The file with only #DEF statements
@implementation SomeController
{
...
}
有什么想法吗
问候,,
Matt这是不可能的,因为您的某些属性实际上不是变量,而是预处理指令 这意味着ObjectiveC预处理器将用您定义的值替换源代码中某个属性的所有实例,但最终可执行文件中没有某个属性的变量/常量 例如:
#define SOME_PROPERTY_1 TRUE
void foo ()
{
Bool value = SOME_PROPERTY_1;
}
将由预处理器转换为:
void foo ()
{
Bool value = TRUE;
}
正如您所看到的,在转换的源代码中没有一些属性
这意味着您无法动态更改某些属性的值