IOS performSelector遅れやキャンセルの問題コール

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];
    });
}

公開された172元の記事 ウォン称賛35 ビュー390 000 +

おすすめ

転載: blog.csdn.net/u012198553/article/details/83096659