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

时间:2011-05-27 21:37:41

标签: objective-c c static

我在一些Objective C类中有辅助C函数。 刚刚发现我在这些函数中使用的全局静态C变量的值在类(duh)的实例之间共享,这不是我想要的。

有没有办法将这些变量声明为本地实例的局部变量,以便辅助函数可以看到它们而不显式传递它们?

2 个答案:

答案 0 :(得分:2)

  

有没有办法将这些变量声明为本地实例

当然,让它们成为实例变量。

可是:

  

这样辅助函数可以看到它们而不显式传递它们吗?

您可以将对象传递给该函数。如果您有适当的访问者,该功能可以获取它们。如果你有变异器,它也可以修改它们。

但是如果你这样做,你也可以创建一个方法,并自动访问实例变量。

答案 1 :(得分:2)

  

希望在必要时避免方法调用

逻辑上将它分开,以便您的低级代码使用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); }

应符合您发布的所有要求(目前为止)。