在Objective C类中使用静态c变量

问题描述

| 我在某些Objective C类中具有辅助C函数。 刚刚发现,我在这函数中使用的全局静态C变量的值在类(duh)的实例之间共享,这不是我想要的。 有没有一种方法可以将这些变量声明为类实例的局部变量,以使它们在帮助函数中可见而无需显式传递它们?     

解决方法

           有没有办法将这些变量声明为类实例的局部变量 当然,使它们成为实例变量。 但:   这样它们就可以在辅助函数中可见而无需显式传递它们? 您可以将对象传递给函数。如果您有适当的访问器,则该函数可以获取它们。而且,如果您有增变剂,它也可以对其进行修改。 但是,如果执行此操作,则最好只创建一个方法,然后自动访问实例变量。     ,           想要在必要时避免方法调用 从逻辑上将其分离,以便您的底层代码使用c或c ++,然后将所需的数据添加到objc类:
/* c example */

typedef struct t_generator {
    UInt32 a;
} t_generator;


static void Generate(t_generator* const gen) {
    /.../   
}

@interface MONObjCGeneratorContainer : NSObject
{
    t_generator generator;
    NSString * name;
    UInt32 b;
}
@end
如果数据接口很简单,则可以从实例中访问它们:
- (void)method { GenerateB(&b); }
应该满足您到目前为止发布的所有要求。