IOS開発の遅延実行のいくつかの方法


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コード: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と等価です