国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[ios]ios的延遲執行方法

2019-11-14 20:13:16
字體:
來源:轉載
供稿:網友
1.最直接的方法performSelector:withObject:afterDelay:
這種方法的缺點:每次要為延時寫一個方法
 
2.使用類別,用BOLCK執行

[代碼]c#/cpp/oc代碼:

01@implementation NSObject (PerformBlockAfterDelay)
02 
03- (void)performBlock:(void (^)(void))block
04          afterDelay:(NSTimeInterval)delay
05{
06    block = [[block copy] autorelease];
07    [self performSelector:@selector(fireBlockAfterDelay:)
08               withObject:block
09               afterDelay:delay];
10}
11 
12- (void)fireBlockAfterDelay:(void (^)(void))block {
13    block();
14}
15 
16@end
 
3.使用GCD

[代碼]c#/cpp/oc代碼:

1void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
2{
3    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
4      dispatch_get_current_queue(), block);
5}
poolo:注意 圖中的dispatch_getcurrent_queue() 方法在ios6已經被kill了
現在用dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0)
第一個參數是優先級有,第二個參數為0或nil
如果要要對界面操作則使用dispatch_get_main_queue();
參考:http://m.survivalescaperooms.com/guwandong/archive/2012/08/08/2626211.html
 
4.可能是不太好的方法,用animation的completion參數

[代碼]c#/cpp/oc代碼:

1[UIView animateWithDuration:0.0 delay:5.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
2} completion:^(BOOL finished) {
3    //do stuff here
4}];
 
5.使用NSOperationQueue,在應用程序的下一個主循環執行:

[代碼]c#/cpp/oc代碼:

1[[NSOperationQueue mainQueue] addOperationWithBlock:aBlock];
 
這個和調用performSelector: with afterDelay of 0.0f等價

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁平县| 宣化县| 含山县| 镇康县| 体育| 德州市| 科尔| 米易县| 开化县| 深水埗区| 遵义县| 海晏县| 涿州市| 龙江县| 合山市| 嘉祥县| 乌兰浩特市| 谷城县| 翼城县| 乌鲁木齐市| 清水河县| 阿拉善盟| 奉节县| 疏勒县| 昌图县| 宜兰县| 榆社县| 梅州市| 潼南县| 瑞丽市| 城固县| 搜索| 黔南| 米脂县| 宣恩县| 保德县| 驻马店市| 榆中县| 鄂尔多斯市| 囊谦县| 北川|