поделиться свойством между различными экземплярами одного и того же класса - PullRequest
0 голосов
/ 06 марта 2010

Можно ли совместно использовать один параметр класса среди всех экземпляров этого класса в target-c?:

@interface Class1 : NSObject {
    NSString* shared; /** shared among instance (this is not, but defined somehow) **/
    NSString* non_shared; /** other parameters non shared **/
}

Тогда в программе каждый экземпляр Class1 имеет свои собственные переменные non_shared (как обычно), но все они обращаются к одной общей переменной (когда один экземпляр меняет все это может видеть).

Одна из возможностей - скрыть переменную как свойство и использовать синглтон в функциях сеттера / геттера, но я не знаю, существует ли простой способ.

Спасибо, Edu

1 Ответ

2 голосов
/ 06 марта 2010

Переменные класса (называемые static во многих других языках ООП) на самом деле немного болезненны в Objective-C.Вы должны объявить статическую глобальную переменную в файле модуля класса (.m) и ссылаться на эту переменную.Вы должны добавить getter / setters уровня класса для инкапсуляции доступа к статической глобальной переменной.Ваш получатель может выделить / инициализировать объект и поместить его в переменную, если он не инициализирован перед возвратом.

Если статическая переменная содержит экземпляр (например, экземпляр NSString в вашем примере), вам необходимоубедитесь, что он не был выделен / инициализирован более одного раза.Посмотрите на dispatch_once, если вы используете OS X 10.6 или выше, чтобы гарантировать единственную инициализацию.

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