Я уверен, что мое замешательство здесь является результатом того, что я застрял в "мышлении Java" и не понимаю, как Obj-C отличается в этом случае.
В Java я могу объявить переменную в классе, вот так, и у каждого экземпляра этого класса будет свой собственный:
MyClass {
String myVar;
MyClass() {
// constructor
}
}
В Obj-C я пытался сделать то же самое, объявив переменную только в файле .m следующим образом:
#import "MyClass.h"
@implementation MyClass
NSString *testVar;
@end
Я ожидал, что эта переменная имеет область действия, ограниченную этим классом. Поэтому я создал второй класс (идентичный):
#import "MySecondClass.h"
@implementation MySecondClass
NSString *testVar;
@end
То, что я вижу (и меня сбивает с толку), заключается в том, что изменение переменной в одном классе влияет на значение, видимое в другом классе. На самом деле, если я установлю точку останова, а затем "Перейти к определению" переменной, это приведет меня к
Я создал очень маленький проект XCode, который демонстрирует проблему здесь.