IOS 알림 메시징 메커니즘(NSNotificationCenter) 및 ARC

메시징 메커니즘 NSNotificationCenter는 항상 자주 사용되고 있지만 그 원리에 대해서는 잘 알지 못합니다.오늘은 메시지 메커니즘의 원리를 처음부터 끝까지 잘 살펴보는 데 시간이 좀 걸린다.iOS는'동기화된'메시지 알림 메커니즘을 제공하여 관찰자가 메시지 센터에 등록하기만 하면 다른 대상이 보낸 메시지를 받아들일 수 있다. 메시지 발송자와 메시지 수용자는 서로 아무것도 모르고 완전히 결합할 수 있다.이런 메시지 알림 메커니즘은 임의의 시간과 대상에 적용될 수 있고 관찰자가 여러 개가 있을 수 있기 때문에 메시지는 방송의 성격을 가진다. 다만 관찰자가 메시지 센터에 등록한 후에 정보를 받아들일 필요가 없을 때 메시지 센터에 취소해야 한다. 이런 메시지 방송 메커니즘은 전형적인'Observer'모델이다.이 요구는 사실 실현되기도 쉽다.실행 중인 모든 응용 프로그램에는 NSNotificationCenter의 구성원 변수가 있는데, 그 기능은 공공 표시줄과 유사하다.대상 등록은 어떤 확실한 notification에 주목한다. (강아지 한 마리를 주운 사람이 있으면 나에게 말해라.)우리는 이 등록 대상들을observer라고 부른다.다른 대상들은 센터에 notifications를 보낼 것이다.center는 이 notifications를 등록된 모든 notification에 관심 있는 대상에게 전송합니다.우리는 이러한 notification을 보내는 대상을poster 메시지 메커니즘이라고 하는데 서버에 데이터를 요청하거나 제출하는 장면에 자주 사용된다. 서버와 성공적으로 상호작용한 후에 서버에서 되돌아오는 데이터를 처리하거나 응답 메시지를 보내는 등 메시지 메커니즘에 사용해야 한다.본고는 어떤 사이트의 전재를 금지하고 그 좀들을 엄하게 규탄한다.
본문은 블로그원에서 시작되었습니다. 검색: 블로그원-자신을 찾습니다.
본 문서의 초기 주소: IOS 메시징 메커니즘(NSNotificationCenter) -http://www.cnblogs.com/xunziji/p/3257447.html메시징 메커니즘을 사용하려면
1. 관찰자 등록 정보 알림
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getUserProfileSuccess:) name:@"Notification_GetUserProfileSuccess" object:nil];

notification Observer 관찰자:self notification Selector에서 메시지를 처리하는 방법명:getUser Profile Success notificationName 메시지 알림의 이름:NotificationGetUser Profile Success notification Sender 메시지 발송자: 어떤 발송자의 알림을 받는지 표시하고, 네 번째 파라미터가 nil이면 모든 발송자의 알림을 받습니다.
 
2. 메시지 알림 보내기
//UserProfile Is A Model//@interface UserProfile : NSObject
[[NSNotificationCenter defaultCenter] postNotificationName:@"Notification_GetUserProfileSuccess" object:userProfile userInfo:nil];

notificationName 메시지 알림의 이름: NotificationGetUserProfileSuccess
notificationSender 메시지 보낸 사람:userProfile
본고는 어떤 사이트의 전재를 금지하고 그 좀들을 엄하게 규탄한다.
본문은 블로그원에서 시작되었습니다. 검색: 블로그원-자신을 찾습니다.
본 문서의 초기 주소: IOS 메시징 메커니즘(NSNotificationCenter) -http://www.cnblogs.com/xunziji/p/3257447.html
3. 관찰자 메시지 처리
- (void) getUserProfileSuccess: (NSNotification*) aNotification{self.userProfile = [aNotification object];lblName.text = self.userProfile.Name;lblEENO.text = self.userProfile.EENO;lblNric.text = self.userProfile.NRIC;lblBirthday.text =self.userProfile.Birthday;lblHireDate.text = self.userProfile.Hiredate;txtMobilePhone.text = self.userProfile.Mobile;txtEmail.text = self.userProfile.Email;}

 
NSNotification에서 받은 메시지 정보: Name: 메시지 이름 NotificationGetUserProfile Success object: 메시지 발송자 userProfile userInfo: 메시지 전달의 데이터 정보
본고는 어떤 사이트의 전재를 금지하고 그 좀들을 엄하게 규탄한다.
본문은 블로그원에서 시작되었습니다. 검색: 블로그원-자신을 찾습니다.
본 문서의 초기 주소: IOS 메시징 메커니즘(NSNotificationCenter) -http://www.cnblogs.com/xunziji/p/3257447.html
4. 관찰자 로그아웃, 메시지 관찰자 제거
IOS에서 ARC를 사용한 후 NSNotification Observer를 제거하는 것을 표시하지 않아도 오류가 발생하지 않지만 이것은 성능과 메모리에 불리한 나쁜 습관이다.
관찰자 로그아웃에는 다음 두 가지 방법이 있습니다.
a. 가장 좋은 방법은 UIViewController.m:
-(void)dealloc {[[NSNotificationCenter defaultCenter] removeObserver:self];}

 If you see the method you don't need to call [super dealloc]; here, only the method without super dealloc needed.
 
b. 개별 제거:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"Notification_GetUserProfileSuccess" object:nil];

본고는 어떤 사이트의 전재를 금지하고 그 좀들을 엄하게 규탄한다.
본문은 블로그원에서 시작되었습니다. 검색: 블로그원-자신을 찾습니다.
본 문서의 초기 주소: IOS 메시징 메커니즘(NSNotificationCenter) -http://www.cnblogs.com/xunziji/p/3257447.html

좋은 웹페이지 즐겨찾기