单例模式就是一个类在系统中最多只有一个实例对象,并通过一个全局的入口对这个实例对象进行访问。
对于共享的资源,实现多个对象去封装是不必要的,不光占用系统资源,还有可能造成冲突,所以一般使用单例模式。
#import "DSSingletonObject.h" @implementation DSSingletonObject + (DSSingletonObject *)defaultObject { static DSSingletonObject *defaultObjectInstance = nil; if (!defaultObjectInstance) defaultObjectInstance = [[super allocWithZone:NULL] init]; return defaultObjectInstance; } + (id)allocWithZone:(struct _NSZone *)zone { return [self defaultObject]; }@end
#import <Foundation/Foundation.h> @interface DSSingletonObject : NSObject // 写法一 + (instancetype)defaultObject; // 写法二:线程安全,iOS4之后常用这种 + (DSSingletonObject *)sharedObject; @end
int main(int argc, const char * argv[]) { DSSingletonObject *obj = [DSSingletonObject defaultObject]; NSLog(@"%p", obj); DSSingletonObject *obj2 = [[DSSingletonObject alloc] init]; NSLog(@"%p", obj2); DSSingletonObject *obj3 = [[DSSingletonObject alloc] init]; NSLog(@"%p", obj3); return 0; }
时间: 2024-10-10 17:34:03