This question already has answers here:
What is the use of Singleton class in objective-c? [duplicate]
(3个答案)
4年前关闭。
我是iOS开发的新手,已经完成了Singleton课程。我理解了这个概念,但是对实现单例类有疑问。任何人都可以使用单例类共享实时示例的源代码。
MySingleTonClass.m
现在,您可以在
编辑
现在,假设您要访问相同的值。然后假设在
假设在SecondViewController.m中
希望我能使您理解它的概念。
如您所知,
(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