Подтвердить что ты не робот

Как определить глобальную переменную, доступ к которой можно получить в любом месте приложения?

Возможный дубликат:
Глобальная цель переменной int c

Я хотел бы создать глобальную переменную. Я хочу получить доступ к этой переменной где угодно.

Явный эквивалент:

static var score:int = 0;

Например, если я определяю глобальные переменные в классе Game. Как получить доступ к этой глобальной переменной?

Game.score ?
4b9b3361

Ответ 1

Если у вас несколько видов в приложении, и в этом случае вы хотите, чтобы переменная была доступна для каждого представления, вы всегда должны создавать класс Model/Data и определять переменную в ней. Что-то вроде этого:

//DataClass.h      
@interface DataClass : NSObject {    

    NSString *str;
}

@property(nonatomic,retain)NSString *str;    
+(DataClass*)getInstance;    
@end  


//DataClass.m    
@implementation DataClass    
@synthesize str;

static DataClass *instance = nil;

+(DataClass *)getInstance
{    
    @synchronized(self)    
    {    
        if(instance==nil)    
        {    
            instance= [DataClass new];    
        }    
    }    
    return instance;    
}    

Теперь в вашем контроллере просмотра вы должны вызвать этот метод как:

DataClass *obj=[DataClass getInstance];  
obj.str= @"I am Global variable";  

Эта переменная будет доступна для каждого контроллера вида. Вам просто нужно создать экземпляр класса Data.

Ответ 2

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

// outside the implementation
static int score = 0; // static means it is only accessible from the current file

@implementation Game

+ (int)score {
    return score;
}
+ (void)setScore:(int)newScore {
    score = newScore;
}

Ответ 3

Предпочтительный способ реализации глобальных переменных в проекте iOS (хотя это не настоящие глобальные переменные) заключается в создании свойства в делетете приложения, а затем просто доступ к этому свойству из каждого из ваших классов.


EDIT: Перечитав свой вопрос, похоже, я неправильно истолковал ваш вопрос, а ответ ughoavgfhw - это, вероятно, то, что вы ищете. Он прав, в переменной Objective-C нет такой вещи, как переменная класса, поэтому вам нужно создать обычную статическую переменную C, а затем создать методы класса (обозначенные +, а не -) для настройки и получения.

Хотя обычно, когда мне нужны "глобальные" переменные в приложении, я создаю классы singleton для размещения их и связанных с ними методов (поэтому делегат приложения не переполняется несвязанными свойствами), или если это меньший проект, я просто используйте делегат приложения (который также является одиночным классом), а не отдельные синглтоны. Хотя нет ничего плохого в подходах статической переменной плюс класс setter/getter, если это работает лучше для ваших нужд.