iOS版は、以下のように呼び出しが相関関数を提供NSObjectの遅れ:
/**************** Delayed perform ******************/
@interface NSObject (NSDelayedPerforming)
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray<NSRunLoopMode> *)modes;
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;
@end
遅延実行機能1、?
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray<NSRunLoopMode> *)modes;
- (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
2、遅延機能を解除
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument;
+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;
- (ボイド)cancelPreviousPerformRequestsWithTarget:(ID) aTargetセレクタ(SEL)aSelectorオブジェクト(NULL可能ID)anArgument;
この関数はパラメータで遅延コール機能を解除することができます。 - (無効)cancelPreviousPerformRequestsWithTarget:(ID) aTarget;
この関数は、すべてのコールの遅延をキャンセルすることができます。
注意:
通常の状況下では、関連する連携API呼び出しがで最近、何の問題もありませんcancelPreviousPerformRequestsWithTarget:
?キャンセルperformSelector:
???;機能のうちは、問題は見つかりませんでした発効せず、関連する情報を検索し、インターネットでのキャンセルはできませんが存在し
た、その後、調査の後実行にcancelPreviousPerformRequestsWithTarget:
時間のAPI、それはすべてOKの後にメインスレッドにカットした後、子スレッドに入りました!
- (void)cancelDealyThread
{
dispatch_async(dispatch_get_main_queue(), ^{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
});
}