Если у вас есть несколько представлений в вашем приложении, и в этом случае вы хотите иметь переменную, доступную для каждого представления, вы всегда должны создавать класс Model/Data и определять переменную в нем. Что-то вроде этого :
Цель-C:
//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";
Эта переменная будет доступна для каждого контроллера представления. Вам просто нужно создать экземпляр класса данных.
Свифт:
class DataClass {
private var str: String!
class var sharedManager: DataClass {
struct Static {
static let instance = DataClass()
}
return Static.instance
}
}
Использование: DataClass.sharedManager.str
Используя dispatch_once
class DataClass {
private var str: String!
class var sharedInstance: DataClass {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: DataClass? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = DataClass()
}
return Static.instance!
}
}
Использование: DataClass.sharedManager.str
person
Nitish
schedule
20.05.2011