2011年7月22日 星期五

延遲執行-block版

在ios中如果要延遲執行某些程式碼,通常是使用performSelector:withObject:afterDelay的方式來做

但是如果只是想執行一兩行程式,又不想新增一個method的話,

可以參考Delayed Blocks in Objective-C這篇文章,

以我本身的例子,我想在xxx.m中使用的話,就在.m檔最上方直接加入:

@interface NSObject (PWObject)

- (void)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay;

@end

@implementation NSObject (PWObject)

- (void)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay
{
    int64_t delta = (int64_t)(1.0e9 * delay);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delta), dispatch_get_main_queue(), block);
}

@end

然後再想用的地方用performBlock:afterDelay即可。