ios定时器userinfo怎么用

2024-12-20 06:40:55
推荐回答(2个)
回答1:

ios定时器userinfo的使用方法:
NSNotificationCenter 这个类是一个通知中心,使用单例设计,每个应用程序都会有一个默认的通知中心。用于调度通知的发送的接受。
// 注册通知观察者的方法
- (void)addObserver:(id)observer
selector:(SEL)aSelector
name:(nullable NSString *)aName
object:(nullable id)anObject;

// 发送通知消息的方法
- (void)postNotification:(NSNotification *)notification;
- (void)postNotificationName:(NSString *)aName
object:(nullable id)anObject;
- (void)postNotificationName:(NSString *)aName
object:(nullable id)anObject
userInfo:(nullable NSDictionary *)aUserInfo;

// 移除观察者的方法
- (void)removeObserver:(id)observer;
- (void)removeObserver:(id)observer
name:(nullable NSString *)aName
object:(nullable id)anObject;

通知的使用流程
1、定义一个事件到来时该执行的方法:
// 接收通知事件的类必须实现一个拥有以下特征的通知处理器方法:
// - (void)方法名:(NSNotification *)通知;
- (void)execute:(NSNotification *)notification {
// do something when received notification
// notification.name is @"NOTIFICATION_NAME"
if(notification.object &&
[notification.object isKindOfClass:[Test class]]) {
// do something
}
}
2、注册观察者:
NSNotificationCenter * ncenter = [NSNotificationCenter defaultCenter];
[ncenter addObserver:self
selector:@selector(execute:)
name:@"NOTIFICATION_NAME"
object:nil];

使用默认的通知中心,上面代码的意义的:观察者 self 在收到名为 @"NOTIFICATION_NAME" 的事件时执行 @selector(execute:),最后一个参数是表示会对哪个发送者对象发出的事件作出响应,nil 时表示接受所有发送者的事件。

回答2:

是否取消,要看你自己的需求! 调用一次计时器方法: myTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:NO]; //不重复,只调用一次。timer运行一次就会自动停止运行 ...