改章节是一篇关于停止方法的帖子
尾末有demo地址
1.在Controll中加上一个button
1
2
3
4
5
6
7
8
9
10
|
- ( void )viewDidLoad { [super viewDidLoad]; UIButton * tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [tempButton setFrame:CGRectMake(50, 50, 220, 40)]; [tempButton setTitle:@ "ClickME" forState:UIControlStateNormal]; [tempButton addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:tempButton]; // Do any additional setup after loading the view, typically from a nib. } |
2.点击button,然后开始两个CGD任务。其中一个在A,1s后停止,停止时将任务B也停止。
停止方法,cancel这个方法。
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
|
- (
void
)clickButton
{
__block UIView * tempView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 220, 30)];
[tempView setBackgroundColor:[UIColor grayColor]];
[self.view addSubview:tempView];
[tempView release];
__block
BOOL
cancel = NO;
//点击以后就会开始行执这个方法
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
int
i = 0;
while
(i < 1000000000 && cancel == NO) {
i++;
}
NSLog(@
"Task end: i = %d"
, i);
//这个不会行执,因为在之前,gcd task经已结束
[tempView removeFromSuperview];
});
//1s 以后行执这个方法
double
delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(
void
){
NSLog(@
"A GCD Task Start"
);
cancel = YES;
[tempView setBackgroundColor:[UIColor blackColor]];
});
}
|
3.行运结果
1
2
|
2013-05-08 19:38:35.730 BlockAsync[1880:11303] A GCD Task Start
2013-05-08 19:38:35.732 BlockAsync[1880:12303] Task end: i = 403577657
|
Demo:http://download.csdn.net/detail/take8619702/5345809
文章结束给大家分享下程序员的一些笑话语录:
手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn