我正在尝试使用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有助于安全地执行线程。

08-05 06:34