Каков эффект от импорта статической структуры из C в Objective-C? - PullRequest
0 голосов
/ 13 апреля 2019

Я отлаживаю устаревшее приложение и столкнулся со следующим сценарием

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, они изменят одну и ту же переменную или их эффекты будут независимы друг от друга?

1 Ответ

3 голосов
/ 13 апреля 2019

Код Objective-C вообще не работает с someVariable.Это просто вызов функции.Статическая структура не «импортируется» в Objective-C, что бы это ни значило.

В любом случае переменная someVariable является единственной.Есть только одна такая переменная.Независимо от того, откуда вызывается cFunctionModifyingSomeVariable(), он все равно работает только с этой переменной.Эта функция C не знает ни об экземплярах класса Objective-C, ни, вообще, о своих вызывающих, поэтому ее поведение не может различаться в зависимости от этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...