This question already has answers here:
What is the use of Singleton class in objective-c? [duplicate]
                                
                                    (3个答案)
                                
                        
                                4年前关闭。
            
                    
我是iOS开发的新手,已经完成了Singleton课程。我理解了这个概念,但是对实现单例类有疑问。任何人都可以使用单例类共享实时示例的源代码。

最佳答案

这就是用于单例课程的GCD的样子。
假设您创建了一个类MySingleTonClass,它是NSObject的子类。

MySingleTonClass.h

 +(instanceType)sharedManager;
@property (nonatomic, strong) NSString *userName;


MySingleTonClass.m

+(instanceType)sharedManager{
     static MySingleTonClass *manager = nil;
     static dispatch_once_t onceToken;
     dispatch_once(&onceToken, ^{
        manager = [[MySingleTonClass alloc]init];
     });
     return manager;
}


现在,您可以在ViewController.m中的其他某些类中调用此singleTon类。首先导入课程

   #import MySingleTonClass.h

 -(void)viewDidLoad{

      MySingleTonClass *manager = [MySingleTonClass sharedManager];
      manager.userName = @"ABCDE";
       //manager is the singleton Object
  }


编辑

现在,假设您要访问相同的值。然后假设在ViewController之后的其他ViewController中

假设在SecondViewController.m中

  #import "MySingleTonClass.h"

   -(void)viewDidLoad{

      MySingleTonClass *manager = [MySingleTonClass sharedManager];
      NSLog (@"%@",manager.userName);
      // This would still log ABCDE, coz you assigned it the class before, So even if you create a new object called manager here, it will return the same Manager you created before.

    manager.userName = @"Myname"; //Now the value changed to MyName untill you change it again, in the lifetime of this application.
  }


希望我能使您理解它的概念。

如您所知,dispatch_once_t是一个GCD代码段,使其中的代码在每次运行应用程序时仅调用一次。您在其中编写的任何代码都将运行,或者在应用程序处于活动状态的生命周期内仅被调用一次。

关于ios - 如何实时实现单例类(class)? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33886584/

10-14 22:02