IOS開発の遅延実行のいくつかの方法
2314 ワード
1.最も直接的な方法performSelector:withObject:afterDelay:
この方法の欠点:毎回遅延のために方法を書く
2.カテゴリを使用してBOLCKで実行
[コード]c#/cpp/ocコード:
3.GCD使用
[コード]c#/cpp/ocコード:
4.あまり良い方法ではないかもしれませんが、animationのcompletionパラメータで
[コード]c#/cpp/ocコード:
5.NSOperationQueueを使用して、アプリケーションの次のメインサイクルで実行します.
[コード]c#/cpp/ocコード:
これはperformSelector:with afterDelay of 0.0 fと等価です
この方法の欠点:毎回遅延のために方法を書く
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コード:
1
void
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
}
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.0 fと等価です