IOS 개발 알림 NSNotificationCenter

2232 단어
방송 같은 소식 통지 메커니즘이다.관찰자는 정보센터에 관심 있는 것만 등록하면 되고, 이 메시지를 보낼 곳이 있을 때 알림센터는 이 메시지를 등록한 대상에게 발송한다.이렇게 하면 여러 대상 사이의 결합을 해소하는 작용을 한다.애플은 우리에게 이 NSNotification Center를 봉하여 통지의 등록과 제거를 편리하게 할 수 있도록 했다.
알림의 3가지 속성:
속성 이름 1、설명
- (NSString*) name 알림의 이름
- (id)object;게시자에게 공지
- (NSDictionary *) userInfo 알림에 대한 추가 정보
NSNotification을 초기화하는 방법:
 
- (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;
 
+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject;
 
+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
 
주의: 공식 문서에 명확한 설명이 있으니 init로 초기화할 수 없습니다
 

2、NSNotificationCenter


이 클래스는 하나의 알림 센터로, 단일 디자인을 사용하면 모든 응용 프로그램에 기본 알림 센터가 있습니다.알림의 발송을 스케줄링하는 데 사용됩니다.
 
관찰자를 추가하면 방법, 이름, 대상을 지정할 수 있습니다.알림을 받았을 때 실행 방법.
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;
 
알림 메시지 보내는 방법
- (void)postNotification:(NSNotification *)notification;
- (void)postNotificationName:(NSString *)aName object:(id)anObject;
- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
 
관찰자 제거 방법
- (void)removeObserver:(id)observer;
- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;
 
몇 가지 참고 사항:
1. 발송한 알림이 Object 대상을 지정하면 관찰자가 수신한 알림 설정의 Object 대상은 그와 같이 알림을 받을 수 있지만 수신 알림은 이 인자를nil로 설정하면 모든 알림을 받을 수 있습니다.
2. 관찰자의 SEL 함수 바늘은 하나의 매개 변수를 가질 수 있다. 매개 변수는 바로 발송된 사오시 대상 자체이고 이 매개 변수를 통해 메시지 대상의userInfo를 추출하여 값을 전달할 수 있다.
  

2. 통지의 사용 절차


우선, 우리는 통지를 받아야 하는 곳에 관찰자를 등록한다. 예를 들어 다음과 같다.
   // 
    NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
    // ,name object nil, 
    [center addObserver:self selector:@selector(notice:) name:@"123" object:nil];

   
-(void)notice:(id)sender{
    NSLog(@"%@",sender);
}

다음과 같이 콜백 함수에서 userInfo 컨텐트를 가져올 수 있습니다.
                                    
      

좋은 웹페이지 즐겨찾기