Глобальный NSString

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

6
задан Knodel 27 April 2010 в 15:25
поделиться

5 ответов

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

NSString *globalString = @"someString";   

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

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

extern NSString *globalString;

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

10
ответ дан 8 December 2019 в 03:52
поделиться

Если вы создаете глобальную переменную 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
3
ответ дан 8 December 2019 в 03:52
поделиться

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

Дополнительная информация об одноэлементном классе находится в MVC на iPhone: Модель

0
ответ дан 8 December 2019 в 03:52
поделиться

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

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

2
ответ дан 8 December 2019 в 03:52
поделиться

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

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

NSMutableString *myString = @"some funny string";

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

extern NSMutableString *myString;
6
ответ дан 8 December 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: