feature: dyld && LD 链接器

This commit is contained in:
杭城小刘
2024-06-29 16:00:34 +08:00
parent 1a8659e143
commit 13f7457be9
367 changed files with 12893 additions and 3049 deletions

View File

@@ -5,6 +5,8 @@
单例与静态类的区别?
有何替代的解决方案?
## 为什么要使用单例?
创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。其中单例模式、工厂模式、建造者模式、原型模式都是创建型模式。
@@ -207,3 +209,34 @@ SingletonHolder 是一个静态内部类,当外部类 IdGenerator 被加载的
## 如何理解单例模式的唯一性
“一个类只允许创建唯一一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。定义中提到,“一个类只允许创建唯一一个对象”。那对象的唯一性的作用范围是什么呢?是指线程内只允许创建一个对象,还是指进程内只允许创建一个对象?答案是后者,也就是说,单例模式创建的对象是进程唯一的
## iOS 侧单例的实现
- GCD `dispatch_once` 保证执行1次
- 实现 `+ (id)allocWithZone:(struct _NSZOne *)zone { } ` 方法。避免单例对象,调用 copy 方法,产生一个新的对象,打破单例效果
实现 `- (id)copyWithZone:(nullable NSZone *)zone { }` 方法,避免单例对象,调用 copy 方法,产生一个新的对象,打破单例效果
```objective-c
+ (id)sharedInstance {
static Mooc *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[super allocWithZone:NULL] init];
});
return instance;
}
+ (id)allocWithZone:(struct _NSZone *)zone {
return [self sharedInstance];
}
- (id)copyWithZone:(nullable NSZone *)zone {
return self;
}
```