iOS 延迟调用某个方法的几种方法
2016-07-19 11:55
459 查看
//
// ViewController.m
// test_方法延迟调用
//
// Created by 邹彦军 on 16/7/19.
// Copyright © 2016年
邹彦军. All rights reserved.
//
#import "ViewController.h"
@interface
ViewController ()
@property (nonatomic,
strong) NSTimer* timer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super
viewDidLoad];
NSLog(@"delayMethodStart");
[self
methodOnePerformSelector];
// [self methodTwoNSTimer];
// [self methodThreeSleep];
// [self methodFourGCD];
// [self methodFiveAnimation];
NSLog(@"nextMethod");
}
// 动画完成的回调
- (void)methodFiveAnimation{
[UIView
animateWithDuration:0
delay:2.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
} completion:^(BOOL finished) {
[self
delayMethod];
}];
}
// GCD
- (void)methodFourGCD{
__weak
ViewController *weakSelf =
self;
dispatch_time_t delayTime =
dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0
* NSEC_PER_SEC));
<
4000
/span>dispatch_after(delayTime,
dispatch_get_main_queue(), ^{
[weakSelf delayMethod];
});
}
// 阻塞线程
- (void)methodThreeSleep{
[NSThread
sleepForTimeInterval:2.0];
}
// 定时器
- (void)methodTwoNSTimer{
self.timer = [NSTimer
scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(delayMethod)
userInfo:nil
repeats:NO];
}
// performSelector方法
- (void)methodOnePerformSelector{
[self
performSelector:@selector(delayMethod)
withObject:nil
afterDelay:2.0];
}
// 被执行的方法
- (void)delayMethod{
NSLog(@"delayMethodEnd");
}
@end
// ViewController.m
// test_方法延迟调用
//
// Created by 邹彦军 on 16/7/19.
// Copyright © 2016年
邹彦军. All rights reserved.
//
#import "ViewController.h"
@interface
ViewController ()
@property (nonatomic,
strong) NSTimer* timer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super
viewDidLoad];
NSLog(@"delayMethodStart");
[self
methodOnePerformSelector];
// [self methodTwoNSTimer];
// [self methodThreeSleep];
// [self methodFourGCD];
// [self methodFiveAnimation];
NSLog(@"nextMethod");
}
// 动画完成的回调
- (void)methodFiveAnimation{
[UIView
animateWithDuration:0
delay:2.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
} completion:^(BOOL finished) {
[self
delayMethod];
}];
}
// GCD
- (void)methodFourGCD{
__weak
ViewController *weakSelf =
self;
dispatch_time_t delayTime =
dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0
* NSEC_PER_SEC));
<
4000
/span>dispatch_after(delayTime,
dispatch_get_main_queue(), ^{
[weakSelf delayMethod];
});
}
// 阻塞线程
- (void)methodThreeSleep{
[NSThread
sleepForTimeInterval:2.0];
}
// 定时器
- (void)methodTwoNSTimer{
self.timer = [NSTimer
scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(delayMethod)
userInfo:nil
repeats:NO];
}
// performSelector方法
- (void)methodOnePerformSelector{
[self
performSelector:@selector(delayMethod)
withObject:nil
afterDelay:2.0];
}
// 被执行的方法
- (void)delayMethod{
NSLog(@"delayMethodEnd");
}
@end
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法