问题描述
|
我在某些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); }
应该满足您到目前为止发布的所有要求。