static
означает то же самое в Objective-C, что в средстве на C - у него есть внутренняя связь и длительность статического хранения.В этом случае вы получите ошибку без static
, потому что у вас будет повторяющийся символ globalStr
в каждом объекте, исходный код которого включает ClassA.h
.Вы не делитесь чем-либо - вы получаете новую копию globalStr
для каждой единицы компиляции.
Не помещайте определения объектов в заголовки, и вы станете лучшевыкл.Если вам нужна одна глобальная строка, вам нужно поместить
extern NSString *globalStr;
в ClassA.h
и определить ее в ровно в одном файле реализации как:
NSString *globalStr = @"HelloWorld";