Delayed Blocks in Objective-C

来源:互联网 发布:java log4j 教程 编辑:程序博客网 时间:2024/06/01 10:39
1、使用GCD,限IOS4.0以上
#import @interface NSObject (PWObject)- (void)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay;@end#import "NSObject+PWObject.h"@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
Usage:
#import "NSObject+PWObject.h"// ...[self performBlock:^{ NSLog(@"Meep, meep!"); } afterDelay:10.0f];// ...

2、常规方式:
#import "NSObject+PerformBlockAfterDelay.h"
@implementation NSObject (PerformBlockAfterDelay)- (void)performBlock:(void (^)(void))block          afterDelay:(NSTimeInterval)delay{    block = [[block copy] autorelease];    [self performSelector:@selector(fireBlockAfterDelay:)               withObject:block               afterDelay:delay];}
- (void)fireBlockAfterDelay:(void (^)(void))block {   block();}@end
3、仅限COCOS2d中
[CCCallBlock actionWithBlock]
0 0
原创粉丝点击