ios 给NSTimer添加Block回调版本创建方法
来源:互联网 发布:上海踩踏事件 知乎 编辑:程序博客网 时间:2024/05/24 07:26
//// NSTimer+Convenience.h// NSTimerBlockDemo//// Created by huangyibiao on 15/3/25.// Copyright (c) 2015年 huangyibiao. All rights reserved.//#import <Foundation/Foundation.h>@interface NSTimer (Convenience)/** * 无参数无返回值Block */typedef void (^HYBVoidBlock)(void);/** * 创建Timer---Block版本 * * @param interval 每隔interval秒就回调一次callback * @param repeats 是否重复 * @param callback 回调block * * @return NSTimer对象 */+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats callback:(HYBVoidBlock)callback;/** * 创建Timer---Block版本 * * @param interval 每隔interval秒就回调一次callback * @param count 回调多少次后自动暂停,如果count <= 0,则表示无限次,否则表示具体的次数 * @param callback 回调block * * @return NSTimer对象 */+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval count:(NSInteger)count callback:(HYBVoidBlock)callback;/** * 开始启动定时器 */- (void)fireTimer;/** * 暂停定时器 */- (void)unfireTimer;@end
//// NSTimer+Convenience.m// NSTimerBlockDemo//// Created by huangyibiao on 15/3/25.// Copyright (c) 2015年 huangyibiao. All rights reserved.//#import "NSTimer+Convenience.h"@implementation NSTimer (Convenience)+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats callback:(HYBVoidBlock)callback { return [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(onTimerUpdateBlock:) userInfo:[callback copy] repeats:repeats];}+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval count:(NSInteger)count callback:(HYBVoidBlock)callback { NSDictionary *userInfo = @{@"callback" : [callback copy], @"count" : @(count)}; return [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(onTimerUpdateCountBlock:) userInfo:userInfo repeats:YES];}+ (void)onTimerUpdateBlock:(NSTimer *)timer { HYBVoidBlock block = timer.userInfo; if (block) { block(); }}+ (void)onTimerUpdateCountBlock:(NSTimer *)timer { static NSUInteger currentCount = 0; NSDictionary *userInfo = timer.userInfo; HYBVoidBlock callback = userInfo[@"callback"]; NSNumber *count = userInfo[@"count"]; if (count.integerValue <= 0) { if (callback) { callback(); } } else { if (currentCount < count.integerValue) { currentCount++; if (callback) { callback(); } } else { currentCount = 0; [timer unfireTimer]; } }}- (void)fireTimer { [self setFireDate:[NSDate distantPast]];}- (void)unfireTimer { [self setFireDate:[NSDate distantFuture]];}@end
可以到github下载:https://github.com/632840804/NSTimerBlockDemo
0 0
- ios 给NSTimer添加Block回调版本创建方法
- ios 给NSTimer添加Block回调版本创建方法
- NSTimer 的block方法
- iOS给图片添加水印 swift版本
- ios中block,NSTimer和dealloc
- iOS中的一些内存问题,block,NSTimer
- iOS,OC给button添加block点击事件扩展
- ios block回调实现方法
- ios给图片添加创建时间(一)
- ios给图片添加创建时间(二)
- iOS 【UIKit-给Button添加监听方法】
- iOS中的一些内存问题,block,NSTimer,dealloc
- iOS中的一些内存问题,block,NSTimer,dealloc
- iOS NSTimer 子线程 创建与取消
- CodeBlocks中给工程添加版本信息的方法
- 给Django1.5版本的QuerySet添加first()方法
- iOS开发封装带有Button的UIView控件,使用block给button添加点击事件
- NSTimer的5种创建方法异同
- 语音特征参数MFCC计算的详细过程(转)
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
- redis 将用户浏览信息入库
- OpenExpress开源啦
- 黑马程序员——Java基础---正则表达式
- ios 给NSTimer添加Block回调版本创建方法
- Android开发_哪些情况会引发内存泄露
- java中break和continues的区别
- 完美洗牌算法
- java Socket用法详解
- wiki的使用
- AutoLayout详解+完全掌握手码autolayout
- 10491 - Cows and Cars
- 两种高效的事件处理模式和并发模式