소식 통지의 세 가지 방식 총결
두 개의 서브시스템이 직접적인 관계가 있으면 클로즈업, 에이전트 등 방법을 고려하여 값을 전달할 수 있다. 만약에 두 개의 서브시스템이 독립적이고 결합 관계가 없다면 이때는 또 다른 형식으로 Notification에 통지해야 한다.
통지의 장점과 단점
이점:
4
4
4
단점:
4
4
4
4
4
NSNotification 의 세 가지 활용 사례 분석:
1. 알림을 보내고 파라미터를 전달하지 않는다.
알림 보내기
[[NSNotificationCenter defaultCenter] postNotificationName:@"notification1" object:nil];
알림을 수신(수신)하려면 다음과 같이 하십시오.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationEvent) name:@"notification1" object:nil];
메소드 호출:
- (void)notificationEvent
{
NSLog(@" ");
}
관찰자를 제거하려면 다음과 같이 하십시오.
-(void)dealloc
{
// ,Observer nil
[[NSNotificationCenter defaultCenter] removeObserver: self name:@"notification1" object: nil];
}
2. Object로 메시지 전달하기;
알림 보내기
[[NSNotificationCenter defaultCenter] postNotificationName:@"notification2" object:[NSString stringWithFormat:@"%@",self.titleLabel.text]];
알림을 수신(수신)하려면 다음과 같이 하십시오.
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(notificationEvent:) name:@"notification2" object: nil];
메소드 호출:
-(void)notificationEvent:(NSNotification *)noti
{
// object
NSString *info = [noti object];
NSLog(@" object :%@",info);
}
관찰자를 제거하려면 다음과 같이 하십시오.
-(void)dealloc
{
// ,Observer nil
[[NSNotificationCenter defaultCenter] removeObserver: self name:@"notification2" object: nil];
}
3. userInfo를 사용하여 메시지를 전달한다.
알림 보내기
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:self.indexPath,@"indexPath",self.subCommentArray[indexPath.row].ID,@"replyID", nil];
//
[[NSNotificationCenter defaultCenter] postNotificationName:@"showInputTitleViewAndRaiseCommentViewWhenReplyToReply" object:nil userInfo:dic];
알림을 수신(수신)하려면 다음과 같이 하십시오.
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(notificationEvent:) name:@"notification3" object: nil];
메소드 호출:
- (void)notificationEvent:(NSNotification *)noti
{
// userInfo
NSDictionary *dic = [noti userInfo];
NSIndexPath *indexPath = [dic objectForKey:@"indexPath"];
NSString *replyID = [dic objectForKey:@"replyID"];
}
관찰자를 제거하려면 다음과 같이 하십시오.
-(void)dealloc
{
// ,Observer nil
[[NSNotificationCenter defaultCenter] removeObserver: self name:@"notification3" object: nil];
}
참고: [[NSNotificationCenter default Center] removeObserver:] 방법은 시스템 알림을 제거하는 것입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.