// in ClassA.h
static NSString *globalStr = @"HelloWorld";
@interface ClassA
...
@end
// in ClassB.h
#include "ClassA.h"
// in ClassB.m
...
NSLog(@"The global string: %@", globalStr);
...
В C++ «статический» должен означать, что переменная или функция имеют внутреннюю связь.
Но он используется для совместного использования переменной в этом случае, ошибка будет происходить без ключевого слова static.Статическая глобальная переменная в Obj-C?
Я смущен, может ли кто-нибудь сказать мне концепцию?
Спасибо!
Это помогает помнить, что заголовки * буквально скопированы * в файл, в который они включены. Вы не «разделяете» эту переменную с другими файлами, которые импортируют заголовок - заголовок вызывает все эти файлы, каждый из которых содержит объявление «static NSString» globalStr = @ «HelloWorld» ' , – Chuck
Думаю, я должен был добавить, что у вас будет такая же ошибка в C++ .... –
Спасибо, но я действительно не знал, почему существует «дублирующий символ». Не могли бы вы объяснить больше, еще раз спасибо. –