mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-24 20:00:37 +00:00
feature: dyld && LD 链接器
This commit is contained in:
@@ -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 为 key,observer 为 value。
|
||||
|
||||

|
||||

|
||||
|
||||
- 第一个 MapTable key 为 notificationName,value 为另一个 MapTable(子 Table)
|
||||
|
||||
@@ -71,7 +79,7 @@ typedef struct NCTbl {
|
||||
|
||||
nameless Table 结构较为简单,因为没有 notificationName,所以就一层 MapTable。key 为 object,value 为链表,存储所有的观察者。
|
||||
|
||||

|
||||

|
||||
|
||||
### wildcard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user