使用宏定义创建单例
//单例 #ifndef KCSingleton_h #define KCSingleton_h #pragma mark 接口.h中的定义 //由于宏定义里有需要替换的内容所以定义一个变量className //##用于分割、连接字符串 #define singleton_interface(className) +(className *)shared##className; #pragma mark 实现.m //\在代码中用于连接宏定义,以实现多行定义 #define singleton_implementation(className) \ static className *_instance;\ +(id)shared##className{\ if(!_instance){\ _instance=[[self alloc]init];\ }\ return _instance;\ }\ +(id)allocWithZone:(struct _NSZone *)zone{\ static dispatch_once_t dispatchOnce;\ dispatch_once(&dispatchOnce, ^{\ _instance=[super allocWithZone:zone];\ });\ return _instance;\ } #endif
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步