我正在尝试使用Objective-C构建MVC应用程序,我试图在我的超类中一次分配和初始化我的模型,而我是UIViewController,我的想法是在超类中执行一次并从我的超类的每个子类中进行访问。
超类
@property (nonatomic, strong) Lecturer *lecturer;
超类
- (void) viewDidLoad {
[super viewDidLoad];
}
#pragma mark - GET
- (Lecturer *)lecturer {
if (!_lecturer) {
_lecturer = [Lecturer alloc]init];
}
return _lecturer;
}
我的想法是从所有子类中调用self.lecturer并设置/获取讲师类的属性,但是每次我调用self.lecturer创建新实例时,我都知道可以使用SINGLETONE,但有什么办法可以做不同的事情没有单调设计模式?
感谢您的关注。
最佳答案
如何使用static
变量?
- (Lecturer *)lecturer {
static dispatch_once_t onceToken;
static Lecturer *o;
dispatch_once(&onceToken, ^{
o = [[Lecturer alloc] init];
});
return o;
}
另外,
dispatch_once
有助于安全地执行线程。