2011-05-27 50 views
1

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

有没有办法将这些变量声明为本地类的实例,以便它们可以通过帮助程序函数而不显式传递它们?

+1

对不起 - 但我不明白这个问题。这听起来像你想要一个只对该对象可见的全局变量?这是没有道理的。 – Abizern 2011-05-27 21:40:46

回答

2

是否有这些声明的局部变量的类的实例

当然,让他们的实例变量的方式。

但是:

,使他们由辅助功能可见不用将它们明确?

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

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

+0

啊是的,像这样'static inline void timeCriticalTask​​(void * refToSelf){}'?我正在使用这些DSP的东西,并希望在必要时避免方法调用..谢谢! – Jakob 2011-05-27 21:45:39

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); } 

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