我正在调试一个遗留应用程序,遇到了以下情况
LegacySource.h
cFunctionModifyingSomeVariable()
LegacySource.c
static struct someVariable; //a custom struct
ObjectiveCImplementation.m
#import LegacySource.h
-(void)workWithLegacy {
cFunctionModifyingSomeVariable(); // modifies variable declared in C class
}
将C中的静态结构导入Objective-C有什么效果?
我的所有Objective-C类是共享静态结构的同一个实例,还是每个实例都有自己的实例?换句话说,如果我创建了3个ObjectiveCImplementation实例,它们会修改同一个变量,还是它们的效果彼此独立?
最佳答案
Objective-C代码根本不能与someVariable
一起工作。它只是调用一个函数。静态结构不会“导入”到Objective-C中,不管这意味着什么。
在任何情况下,变量someVariable
都是单数的。只有一个这样的变量。无论从何处调用cFunctionModifyingSomeVariable()
,它仍然只处理这一个变量。该C函数不知道Objective-C类的实例,或者更一般地说,不知道其调用方的任何情况,因此其行为不能因此而有所不同。
关于c - 将C的静态结构导入到Objective-C中会有什么影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55664581/