iOS 定时器
来源:互联网 发布:常见的时间序列算法 编辑:程序博客网 时间:2024/05/21 02:36
1、NSTimer使用注意
1)与RunLoop的关系
2)释放不掉的问题
http://blog.csdn.net/Christ_Beings/article/details/53425665
https://www.mgenware.com/blog/?p=459
***http://www.cocoachina.com/ios/20150710/12444.html
.h
//
// HLWeakTimerTarget.h
// ThreadTest
//
// Created by Holly on 2017/12/4.
// Copyright © 2017年 Holly. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface HLWeakTimerTarget : NSObject
@property (nonatomic, weak) id target;
@property (nonatomic, assign) SEL selector;
@property (nonatomic, weak) NSTimer* timer;
+ (NSTimer *) scheduledTimerWithTimeInterval:(NSTimeInterval)interval
target:(id)aTarget
selector:(SEL)aSelector
userInfo:(id)userInfo
repeats:(BOOL)repeats;
@end
.m
//
// HLWeakTimerTarget.m
// ThreadTest
//
// Created by Holly on 2017/12/4.
// Copyright © 2017年 Holly. All rights reserved.
//
#import "HLWeakTimerTarget.h"
@implementation HLWeakTimerTarget
+ (NSTimer *) scheduledTimerWithTimeInterval:(NSTimeInterval)interval
target:(id)aTarget
selector:(SEL)aSelector
userInfo:(id)userInfo
repeats:(BOOL)repeats {
HLWeakTimerTarget* timerTarget = [[HLWeakTimerTargetalloc] init];
timerTarget.target = aTarget;
timerTarget.selector = aSelector;
// 通过这个方法把timer强引用的对象换为timerTarget
timerTarget.timer = [NSTimerscheduledTimerWithTimeInterval:interval
target:timerTarget
selector:@selector(fire:)
userInfo:userInfo
repeats:repeats];
return timerTarget.timer;
}
- (void) fire:(NSTimer *)timer {
if(self.target) {
// 还是原来的target执行定时器的方法
[self.targetperformSelector:self.selectorwithObject:nil];
} else {
[self.timerinvalidate];
}
}
@end
使用:
NSTimer *timer = [HLWeakTimerTargetscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(timerFire:)userInfo:nilrepeats:YES];
-(void)timerFire:(id)userinfo {
NSLog(@"Fire--------%@",userinfo);
}
1、NSTimer 误差
http://blog.csdn.net/y_csdnblog_xx/article/details/51538247
加入到RunLoop的mode方式,我们刚才的NSTimer默认添加在NSDefaultRunLoopMode上,而UIScrollView在滑动的时候,RunLoop会自动切换到 UITrackingRunLoopMode,NSTimer并没有添加到这个RunLoop模式上,自然也是不会启动的。所以,如果我们想要NSTimer在UIScrollView滑动的时候也会启动的话,只要将NSTimer添加NSRunLoopCommonModes上即可。NSRunLoopCommonModes是RunLoop模式的集合。
- IOS 定时器
- ios 定时器
- ios定时器
- iOS 定时器
- iOS定时器
- IOS定时器
- iOS 定时器
- IOS - 定时器
- iOS 定时器
- 定时器iOS
- iOS定时器
- iOS - 定时器
- iOS -- 定时器
- iOS 定时器
- iOS 定时器
- iOS定时器
- iOS定时器
- ios定时器
- JavaScript正则表达式:
- 在win7安装MySQL5.7(教程)
- 一些简单的小程序_7——C语言篇
- 二叉搜索树
- 何恺明团队推出Mask^X R-CNN,将实例分割扩展到3000类
- iOS 定时器
- 秒杀系统架构优化思路
- C# 含runat="server"属性 select控件的value和text赋值(实际值和显示文本)
- activiti使用
- 《kubernetes-1.8.0》14-examples-javaweb-tomcat-sidecar
- numpy简易教程
- ubuntu server17.10无线网络连接
- myql在windows上的安装
- 自动将jsx转化为js