iOS中的事件有哪几种
iOS的事件机制一共三种分别是
- addTarget方式
- delegate代理方式
- Notification通知机制
通知机制的原理
- iOS的通知分为通知发布者和通知监听者,通知将会放在
NSNotificationCenter
中。
- 通知发布者发布带有信息(或者不带有信息)的通知,放置到
NSNotificationCenter
中。
- 通知监听者可以选择需要监听的对象。
- 要注意的是,在编码中是先放置监听者,再放置通知发布者。保证通知发布时已经有监听者在监听。
通知机制的实现
相信你看了下面的代码一定能理解,博主把能打上的注释全部打上了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#import <Foundation/Foundation.h> #import "NotificationListener.h" #import "NotificationSender.h"
int main(int argc, const char * argv[]) { @autoreleasepool { NotificationSender *sender1 = [[NotificationSender alloc] init]; NotificationListener *listener1 = [[NotificationListener alloc] init]; NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:listener1 selector:@selector(listen:) name:@"通知1" object:sender1]; [notificationCenter postNotificationName:@"通知1" object:sender1 userInfo:@{@"title" : @"阅兵", @"content" : @"阅兵将在9点开始"}]; } return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
#import <Foundation/Foundation.h>
@interface NotificationSender : NSObject
@property (nonatomic, copy) NSString *name;
@end
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#import "NotificationSender.h"
@implementation NotificationSender
@end
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#import <Foundation/Foundation.h>
@interface NotificationListener : NSObject
@property (nonatomic, copy) NSString *name;
- (void)listen:(NSNotification *)noteInfo;
@end
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#import "NotificationListener.h"
@implementation NotificationListener
- (void)listen:(NSNotification *)noteInfo { NSLog(@"监听到"); NSLog(@"%@",noteInfo); }
- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }
@end
|
源码
博主也上传了一份源码http://download.csdn.net/detail/u010127917/9139983
希望同样在学习的同学能和小鱼一起进步~
有什么问题都可以在博文后面留言,或者微博上私信我。
博主是 iOS 妹子一枚。
希望大家一起进步。
我的微博:Lotty周小鱼