我在一些Objective C类中有辅助C函数。 刚刚发现我在这些函数中使用的全局静态C变量的值在类(duh)的实例之间共享,这不是我想要的。
有没有办法将这些变量声明为本地实例的局部变量,以便辅助函数可以看到它们而不显式传递它们?
答案 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); }
应符合您发布的所有要求(目前为止)。