Intereting Posts
Получите доступ к распознавателю (ы) жестов UIPageViewController, чтобы включить удаление удаленных файлов Как вставить метаданные в экземпляр AVMutableComposition во время выполнения без записи в файл преобразование объектно-c-ориентированного api в android серверная проблема для Push-уведомления в ios Основные данные не сохраняют данные между запусками приложений ios плагин com.apple.share.Facebook.post не отображает предоставленный текст AFNetworking 2 – отправить запрос – добавить простой текст в тело Swift 3.0: проблема «objc_setAssociatedObject» Codename одна сборка iOS не работает на сервере – Несколько основных классов Как решить между CCCrypt или SecKeyEncrypt EXC_BAD_ACCESS с MKNetworkEngine Навигация по гироскопу – iOS iOS: найти ключи в Localizable.strings, которые никогда не использовались Отображение MKAnnotation для настраиваемого объекта Понимание того, почему использование слабых освобождающих хранимых свойств после создания внутри функции

Глобальная собственность в объекте C

У меня есть перечисление, определенное в файле Constants.h следующим образом:

typedef enum { CalendarTypeMonth = 0, CalendarTypeWeek } CalendarType; 

Затем, на мой взгляд, я определяю тип календаря и сохраняю его в свойстве следующим образом:

 @property (nonatomic) CalendarType myCalendarType; 

Теперь я хочу, чтобы все классы в моем проекте имели доступ к типу календаря. Как установить это свойство как global / extern, чтобы все классы могли это прочитать?

EDIT: Я знаю, что определение перечисления будет доступно по всему проекту. Но меня интересует ценность myCalendarType . Как я могу получить доступ к значению myCalendarType для всех классов?

Вы можете объявить метод класса для доступа к статической переменной.

Добавьте такой код в файл реализации:

 static MyStaticType staticVar = MyStaticTypeDefault; +(BOOL)myStaticVar { return staticVar; } +(void)setMyStaticVar:(MyStaticType)newValue { staticVar = newValue; } 

И создайте объявления для этих методов в файле интерфейса. Это намного лучше, чем перемещение всех статических значений в AppDelegate. Во всяком случае, возможно много вариантов – например, вы можете создать singleletone для хранения некоторых настроек приложения или использовать CoreData.

В файле [Project Name] _Prefix.pch вы можете добавить это заявление:

 #import "Constants.h" 

Таким образом, вы сделаете свой enum доступным для каждого файла в проекте.

EDIT: Чтобы получить доступ к значению, я предлагаю сделать его глобальным свойством вашего делегата приложения. Чтобы сделать это еще дальше, вы можете заставить ваше приложение делегировать метод NSObject с помощью категории, чтобы он мог выглядеть примерно так:

 CalendarType current = [self appDelegate].currentCalendarType 

Обратите внимание, что ваше свойство теперь является общедоступным / устанавливаемым объектом.