Ваш вопрос немного двусмысленный, поэтому я собираюсь дать вам два ответа здесь.Вы можете уточнить свой вопрос.:)
C глобалы не работают таким образом.
Другие, кажется, предполагают, что у вас есть NSString *database
в вашем классе.Но я собираюсь взять ваш вопрос за чистую монету и предположить, что он у вас в свободном доступе в appdelegate.h.
(Кстати, это делает проблему C, а не Objective-C.)
Происходит следующее: каждый раз, когда импортируется appdelegate.h, файл .m, в конечном счете ответственный за импорт, получает новую его копию.
Вы должны иметь extern
в appdelegate.h какЧто ж.Неэкстерьер NSString *database
должен быть в файле .m.
Objective-C не работает таким образом.
Другая возможность, конечно, в том, что у вас действительно естьNSString *database
в вашем классе.Это делает его не глобальной переменной, а переменной экземпляра.Вы не можете объявить его как глобальный, используя extern NSString *database
в другом заголовке.То, что вы делаете, это установка переменной экземпляра в вашем AppDelegate и доступ к глобальному файлу с тем же именем из вашего другого класса.
Полностью удалите глобальный объект и просто используйте свой AppDelegate.Вы можете прочитать его, используя аксессор.
Что-то вроде:
id appDelegate = [[UIApplication sharedApplicaiton] delegate];
id databasePath = [appDelegate databasePath];