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

@@ -2,6 +2,8 @@
> 有人聊起来 NSNotification 可以在不同的线程发和接收吗?对于不知道或者不确定的知识,有必要探究记录下
## NSNotificationCenter
```objectivec
@@ -24,6 +26,8 @@
直接上 GUNStep 源码探索下
### Observation
```c
@@ -38,6 +42,8 @@ typedef struct Obs {
结构体存储了 observer、selector 信息。此外可以看出是一个链表结构next指向注册了同一个通知的下一个观察者。
### NCTbl
```c
@@ -55,11 +61,13 @@ typedef struct NCTbl {
- nemeless同于保存添加观察者时没有传递 NotificationName 的情况
### named Table
该表用于存储添加观察者时传了 NotificationName 的情况。也就是 Named Table 中NotificationName 作为 key。在使用系统 API 注册观察者的时候还可以传入 object 参数,表示只监听该对象发出的通知,所以还需要一张表存储 object 和 observer 的对应关系object 为 keyobserver 为 value。
![](https://github.com/FantasticLBP/knowledge-kit/raw/master/assets/notification-namedTable.png)
![](./../assets/notification-namedTable.png)
- 第一个 MapTable key 为 notificationNamevalue 为另一个 MapTable子 Table
@@ -71,7 +79,7 @@ typedef struct NCTbl {
nameless Table 结构较为简单,因为没有 notificationName所以就一层 MapTable。key 为 objectvalue 为链表,存储所有的观察者。
![](https://github.com/FantasticLBP/knowledge-kit/raw/master/assets/Notification-namelessTable.png)
![](./../assets/Notification-namelessTable.png)
### wildcard