酷代码 AI
菜单
服务商

iOS开发ARC环境下:两种创建单例方式及代码示例揭秘

在iOS开发中,ARC环境下创建单例有两种方式:懒加载方式和关联对象方式。 1. 懒加载方式: ```objective-c #import "Singleton.h" @implementation Singleton + (Singleton *)sharedInstance { static Singleton *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance; } @end ``` 2. 关联对象方式: ```objective-c #import "Singleton.h" @implementation Singleton + (Singleton *)sharedInstance { static Singleton *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; // 使用关联对象的方式,将sharedInstance与self强关联 [self willChangeValueForKey:@"sharedInstance"]; objc_setAssociatedObject(self, @"sharedInstance", sharedInstance, OBJC_ASSOCIATION_RETAIN_NONATOMIC); [self didChangeValueForKey:@"sharedInstance"]; }); return sharedInstance; } @end ``` 注意:关联对象方式需要在+load方法中,使用+willChangeValueForKey和+didChangeValueForKey方法进行一次KVO操作,这样才能确保所有类的+load方法都执行完毕后,才会调用单例的+sharedInstance方法,从而保证单例的线程安全。 ######[AI写代码神器 | 289点数解答 | 2023-11-08 00:30:18]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]