Цель-C: Как я могу получить доступ к строковой переменной как к глобальной? - PullRequest
1 голос
/ 10 февраля 2010

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

Пожалуйста, помогите мне.

Ответы [ 4 ]

15 голосов
/ 10 февраля 2010

Оставляя в стороне вопрос о глобальных переменных и, если они являются хорошей практикой кодирования ...

Создайте свою строку вне любого класса Objective C в файле .m в вашем проекте:

NSString *myGlobalString = @"foo";

Затем поместите объявление в заголовочный файл, который включается в любой другой файл, который хочет получить доступ к вашей строке:

extern NSString *myGlobalString;

Хорошо, я не могу оставить это в стороне. Рассматривали ли вы возможность размещения вашей "глобальной" строки где-то еще, возможно, внутри вашего делегата приложения как (возможно, только для чтения) свойства?

2 голосов
/ 10 февраля 2010

Предпочтительными методами для создания глобальной переменной являются:

  1. Создать синглтон-класс, который хранит переменные как атрибуты.
  2. Создайте класс, у которого есть методы класса, которые возвращают переменные. Поместите интерфейс класса в универсальный заголовок, поэтому все классы в проект наследует его.

Большим преимуществом метода (2) является то, что он инкапсулирован и переносим. Нужно использовать классы, которые используют глобальные в другом проекте? Просто переместите класс с переменными вместе с ними.

1 голос
/ 24 февраля 2010

Этого можно добиться, реализовав методы getter и setters в классе делегатов.

В файле делегата .h

Включить делегата UIApplication

 @interface DevAppDelegate : NSObject <UIApplicationDelegate>

  NSString * currentTitle;

 - (void) setCurrentTitle:(NSString *) currentTitle;
 - (NSString *) getCurrentTitle; 

В классе реализации делегата .m

 -(void) setCurrentLink:(NSString *) storydata{
currentLink = storydata;

}

-(NSString *) getCurrentLink{
if ( currentLink == nil ) {
    currentLink = @"Display StoryLink";
}
return currentLink;
}

Таким образом, переменная, которую вы оцениваете, устанавливается в строке currentlink с помощью метода setters и класса, где вы хотите строку, просто используйте метод getter.

Всего наилучшего

0 голосов
/ 16 февраля 2011

Я опубликовал статью о моей методологии для этого:

http://www.pushplay.net/2011/02/quick-tip-global-defines/

Это то, что я в основном использую для уведомлений. Создание файла globals.h и добавление его в файл (your_project_name) _Prefix.pch обеспечит его глобальный доступ ...

...