Установить @ свойства класса Singleton - PullRequest
5 голосов
/ 20 сентября 2011

В настоящее время я использую свойство класса AppDelegate.

Теперь, когда мои расходы расходуются, мне нужно более одного из этих глобальных свойств, поэтому я решил создать класс Singleton, который будет содержатьсвойства и будут управлять ими.Я нашел много информации о синглетонах, но не мог понять, можно ли изменить свойство, не имея экземпляра класса?

Например:

@interface Tools : NSObject

@property (nonatomic,retain) NSDictionary* item;

... 

@end

Я хотел бы сделать:

[Tools setItem:someDict];
someClass = [someClass alloc] initWithItem:[Tools getItem]];

Все мои идеи закончились проблемой, что у класса Tools нет экземпляра.Я попытался установить элемент как статическую переменную (не свойство), что сработало, но я уверен, что это неправильно, зачем это делать.

связанный, но другой вопрос, Добавление:

#import "Tools.h"

В файл project-Prefix.pch, поэтому свойства элемента будут доступны из любого места в проекте. Это хорошая идея?

Ответы [ 3 ]

6 голосов
/ 20 сентября 2011

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

[Tools sharedInstance].item = someDict; // or
[[Tools sharedInstance] setItem:someDict;

Затем метод sharedInstance обеспечивает правильное создание единственного экземпляра Tools.Я к этому привык.Альтернатива - член класса.Вы можете посмотреть на эту тему:

BOOL сбрасывается в NO в методе init

2 голосов
/ 20 сентября 2011

Что касается моих знаний об Objective-C, то нет такой вещи, которую вы могли бы назвать @property без создания экземпляра.
Можно сослаться Как мне объявить свойство уровня класса в Objective-C

0 голосов
/ 21 сентября 2011

Существует обсуждение класса @properties в этой теме, связанной с ARC (рекомендуемый способ создания синглетонов с ARC - с помощью методов класса).Переменные класса еще не существуют, но я предлагаю вам подать радар, чтобы проголосовать за функцию.

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