Глобальная NSString - PullRequest
       9

Глобальная NSString

6 голосов
/ 27 апреля 2010

Мне нужно создать строку NSString, чтобы я мог установить ее значение в одном классе и получить его в другом. Как я могу это сделать?

Ответы [ 6 ]

10 голосов
/ 27 апреля 2010

если вы напишите:

NSString *globalString = @"someString";   

где угодно вне метода, определения класса, функции и т. Д. ... на него можно будет ссылаться где угодно (это глобально!)

Файл, который обращается к нему, будет объявлен как внешний

extern NSString *globalString;

Это объявление означает, что к нему обращаются из другого файла.

6 голосов
/ 23 января 2012

Глобальная переменная NSString для полного проекта iPhone / приложений

Для объявления / определения / использования глобальной переменной выполните следующие простые шаги: -

  1. Создайте файл NSObject с именами «GlobalVars.h и .m» или по вашему желанию
  2. Объявите вашу глобальную переменную в файле GlobalVars.h после #import и до @implementation like-

    extern NSString * Var_name;

  3. инициализировать его в файле GlobalVars.m после #import и до @implementation like-

    NSString * Var_name = @ "";

  4. Определите его свойство в файле AppDelegate.h

    @ свойство (неатомное, сохранение) NSString * Var_name;

  5. Синтезируйте его в AppDelegate.m Файл как-

    @ synthesize Var_name;

  6. Теперь, где вы хотите использовать эту переменную (в файле .m), просто импортируйте / включите файл GlobalVars.h во все файлы .h, и вы можете легко получить доступ к этой переменной как к глобальному.

  7. Внимательно следуйте этим шагам, и это сработает.
6 голосов
/ 27 апреля 2010

Сделать его глобальной переменной.

В одном файле в глобальной области видимости:

NSMutableString *myString = @"some funny string";

В другом файле:

extern NSMutableString *myString;
3 голосов
/ 27 апреля 2010

Если вы создаете глобальную переменную NSString, вам следует использовать, вероятно, метод класса.

В MyClass.h:

@interface MyClass : NSObject {}
     + (NSString *)myGlobalVariable;
     + (void)setMyGlobalVariable:(NSString *)val;
@end

В MyClass.m:

@implementation MyClass
    NSString *myGlobalVariable = @"default value";

    + (NSString *)myGlobalVariable {
        return myGlobalVariable;
    }

    + (void)setMyGlobalVariable:(NSString *)val {
        myGlobalVariable = val;
    }
@end
2 голосов
/ 28 апреля 2010

Помните, что вы должны помнить о распределении и освобождении памяти. Это не то же самое, что глобальное значение int - вам нужно управлять памятью с помощью любого NSObject.

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

0 голосов
/ 27 апреля 2010

Я думаю, вы должны использовать синглтон. Хорошая статья, в которой обсуждается это Singletons, AppDelegates и данные верхнего уровня.

Дополнительная информация о классе синглтона на

MVC на iPhone: Модель

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