将C中的静态结构导入Objective-C有什么影响?

问题描述 投票:0回答:1

我正在调试遗留应用程序并遇到以下情况

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实例,它们会修改相同的变量,还是它们的效果会相互独立?

c objective-c inheritance struct static-variables
1个回答
3
投票

Objective-C代码根本不适用于someVariable。它只是调用一个函数。无论可能意味着什么,静态结构都不会“导入”到Objective-C中。

在任何情况下,变量someVariable都是单数。只有一个这样的变量。无论从哪里调用cFunctionModifyingSomeVariable(),它仍然只适用于那个变量。该C函数不知道Objective-C类的实例,或者更一般地,不知道有关其调用者的任何事情,因此它的行为不能基于此而有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.