Xamarin.ios 单触式装订-从单独的收割台装订#DEF

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#代码中访问这些属性,以便可以更改它们。现在,如果我想更改它们,但无法动态更改它们(目标是什么

我正在绑定一个ObjC库,它运行得很好,但我有一个问题。 ObjC库正在使用在单独的标头中定义的一些值

例如,具有以下内容的标题:

#define SOME_PROPERTY_1 TRUE
#define SOME_PROPERTY_2 TRUE
#define SOME_PROPERTY_3 FALSE
根据这些属性,库将对视图进行一些更改(因此这些更改在库中,而不是在我的C#代码中)

我想从我的C#代码中访问这些属性,以便可以更改它们。现在,如果我想更改它们,但无法动态更改它们(目标是什么),我需要重新构建库

这可能吗

我已经对此进行了搜索,但我不了解两个建议的解决方案:

  • 将它们放在我的C#代码中,而不是我的绑定中 ->我假设这不是一个解决方案,因为在这种情况下,库将不知道这些更改?(无连接)
  • 将它们绑定为(静态)属性
  • 不幸的是,我不知道怎么做。在这个标题中,没有类/接口,只有#DEF语句,所以我不知道应该在哪个“类”中定义这些属性

    然后,该头包含在其他一些ObjC类中。我试图看看是否可以在那里定义它们,但这是一个接口,属性不被接受

    所以基本上,我绑定了一个“SomeController”类,“SomeController.h”被定义为接口

    @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;
    }
    
    正如您所看到的,在转换的源代码中没有一些属性

    这意味着您无法动态更改某些属性的值