Правильный способ сделать переменную доступной во всем файле .m? - PullRequest
1 голос
/ 20 января 2012

Как вы можете сказать, я новичок в Objective-C.В настоящее время у меня работает Singleton, но я пытаюсь использовать его для нескольких методов в одном и том же файле .m.

Прямо сейчас я использую это, чтобы объявить / создать экземпляр Singleton в методе:

GlobalData *globDat=[GlobalData getInstance];

Нужно ли объявлять это в каждом методе, или есть способ сделать это вначало файла .m (или .h?), чтобы я мог получить к нему доступ с помощью других методов?

Спасибо ...

(Кстати, я пытался разместить показанную строку кодавыше под моей строкой "@implementation", но я получаю ошибку: "Элемент Initializer не является константой времени компиляции", что я теперь знаю, потому что строка не в методе.)

Ответы [ 2 ]

1 голос
/ 20 января 2012

Вы можете добавить расширение класса и сохранить глобальные данные в ivar, например:

@interface MyClass() {
    GlobalData *globDat;
}
@end

@implementation MyClass

-(id) init {
    self = [super init];
    if (self) {
        globDat=[GlobalData getInstance];
    }
    return self;
}

@end

Это позволит скрыть globDat от интерфейса и сделать его доступным для всех методов, которые вы реализуете внутри блока реализации MyClass.

0 голосов
/ 20 января 2012

когда вам нужна переменная / объект, который доступен для всех методов в данных реализации, вам нужно объявить его в файле заголовка, а затем синтезировать его в файле реализации (обратите внимание, что вам может потребоваться импортировать заголовок GlobalData )

так

в заголовке (.h):

@class GlobalData;

@properties (nonatomic, strong) GlobalData *globDat;

и затем в файле реализации (.m)

#import "blablabla.h"
#import "GlobalData.h"

@implementation blablabla

@synthesize globDat;

-(void)viewDidLoad
{
globDat = [GlobalData getInstance];
}

удачи

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