iOS开发之单例---模仿UIApplication

A:UIApplication 单例的三大特点

1、具有其他单例的特性,即内存中只存在一个对象

2、程序一启动的时候就会创建

3、外界无法调用alloc方法,一旦调用系统就会抛出异常,使程序崩溃

B:实战

1、首先创建一个Test的类,在头文件中声明外部调用方法

@interface Test : NSObject

+ (instancetype)shareTest;

@end

2、然后在.m文件里面实现

a、首先需要先声明静态变量

static Test *_instance = nil;

b、重写load方法

+ (void)load
{
    //作用:加载类,会在每次程序启动的时候,会把所有的类加载进内存
   _instance = [[self alloc] init];
    
}

C、实现公开的方法

+(instancetype)shareTest{
    return _instance;
}

d、最重要的是重写alloc方法

+ (instancetype)alloc
{
    //此时判断是否已经分配了内存
    if (_instance) {
        // 如果已经分配内存,抛异常,告诉外界不运用分配
        NSException *excp = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Person instance." userInfo:nil];
        [excp raise];
    }
    // 如果没有分配内存则调用父类方法开辟内存

    return [super alloc];
}
以上就是关于UIApplication单例系统的实现原理,如有不同见解请留言,谢谢;本人菜鸟一枚,望各位路过大
神不喜勿喷,希望大家有意见多多指正

你可能感兴趣的:(iOS开发之单例---模仿UIApplication)