通知

作者: 暴躁的小豆子 | 来源:发表于2019-12-18 18:58 被阅读0次
    通知是使用观察者模式来实现的用于跨层传递消息的机制,传递方式为一对多
    通知机制&原理

    在NSNotificationCenter通知中心会维护一个map(字典及图上Notification_Map)表,它的key(notificationName)是通知的名字,value是我们添加的观察者observer,这里的观察有可能是多个所以是观察者列表,列表中的成员应该包含观察者、观察者调用的方法等

    //生成一个单利通知类 添加一个字典 
    +(WWNotificationCenter *)defaultCenter{
        
        static WWNotificationCenter * singleTon;
        
        static dispatch_once_t onceToken ;
        
        dispatch_once(&onceToken, ^{
            
            singleTon = [[self alloc]initSingleton];
        });
        
        return singleTon;
    }
    //初始化字典
    -(instancetype)initSingleton{
        
        if ([super init]){
            
            _obsetvers = [[NSMutableDictionary alloc]init];
        }
        
        return self;
    }
    
    -(void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSString *)aName object:(nullable)anObject{
        
        if ([self.obsetvers objectForKey:aName]){//名字为aName通知是否添加过观察者
            
            NSMutableArray *arrays =(NSMutableArray*)[self.obsetvers objectForKey:aName];
            
            //创建数组模型
            
            WWObserverModel *observerModel =[[WWObserverModel alloc]init];
            
            observerModel.observer = observer;
            
            observerModel.selector = aSelector;
            
            observerModel.notifiaionName = aName;
            
            observerModel.objcet = anObject;
             
             [arrays addObject:observerModel];
         }else{
             //名字为aName通知是否添加过观察者 创建通知列表 加到字典中
         }
         
      详细看demo...
    }
    
    

    模拟系统通知

    相关文章

      网友评论

          本文标题:通知

          本文链接:https://www.haomeiwen.com/subject/sjgunctx.html