Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在目标c类中使用静态c变量_Objective C_C_Static - Fatal编程技术网

Objective c 在目标c类中使用静态c变量

Objective c 在目标c类中使用静态c变量,objective-c,c,static,Objective C,C,Static,在一些目标C类中,我有辅助C函数。 刚刚发现我在这些函数中使用的全局静态C变量的值在类的实例之间共享(duh),这不是我想要的 有没有一种方法可以将这些变量声明为类实例的局部变量,这样它们就可以被helper函数看到,而无需显式地传递它们 有没有办法将这些变量声明为类实例的局部变量 当然,让它们成为实例变量 但是: 使它们在助手函数中可见,而不显式传递它们 可以将对象传递到函数中。如果您有适当的访问器,函数可以获取它们。如果你有变异子,它也可以修改它们 但是,如果您正在这样做,您还可以创建一个方

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

有没有一种方法可以将这些变量声明为类实例的局部变量,这样它们就可以被helper函数看到,而无需显式地传递它们

有没有办法将这些变量声明为类实例的局部变量

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

但是:

使它们在助手函数中可见,而不显式传递它们

可以将对象传递到函数中。如果您有适当的访问器,函数可以获取它们。如果你有变异子,它也可以修改它们

但是,如果您正在这样做,您还可以创建一个方法,并自动访问实例变量

有没有办法将这些变量声明为类实例的局部变量

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

但是:

使它们在助手函数中可见,而不显式传递它们

可以将对象传递到函数中。如果您有适当的访问器,函数可以获取它们。如果你有变异子,它也可以修改它们

但是,如果您正在这样做,您还可以创建一个方法,并自动访问实例变量

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

逻辑上分隔它,使您的低级代码在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); }
这应该满足您发布的所有要求(到目前为止)

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

逻辑上分隔它,使您的低级代码在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); }

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

对不起,我不明白这个问题。听起来您想要一个只对对象可见的全局变量?这没有道理。对不起,我不明白这个问题。听起来您想要一个只对对象可见的全局变量?是的,像这样的
静态内联void timeCriticalTask(void*refToSelf){}
?我将这些用于DSP,并希望在必要时避免方法调用。。谢谢啊,是的,像这样
静态内联void timeCriticalTask(void*refToSelf){}
?我将这些用于DSP,并希望在必要时避免方法调用。。谢谢