iOS中延遲執行和取消的幾種方式

2022-08-02 06:45:11 字數 2525 閱讀 1221

公用延遲執行的方法:

- (void)delaymethod 

1、延遲執行
/**

* 延遲執行

* * @param aselector 方法名稱

* @param anargument 要傳遞的引數,如果無引數,就設為nil

* @param delay 延遲的時間

*/- (void)performselector:(sel)aselector withobject:(nullable id)anargument afterdelay:(nstimeinterval)delay;

2、取消延遲執行

下面兩個方法都是類方法,不能用例項物件去呼叫,只能用 nsobject。

/**

* 取消延遲執行的某一方法

* * @param atarget 一般填self

* @param aselector 延遲執行的方法

* @param anargument 設定延遲執行時填寫的引數(必須和上面performselector方法中的引數一樣)

*/+ (void)cancelpreviousperformrequestswithtarget:(id)atarget selector:(sel)aselector object:(nullable id)anargument;

/**

* 取消延遲執行的所有方法

* * @param atarget 一般填self

*/+ (void)cancelpreviousperformrequestswithtarget:(id)atarget;

3、使用如下:
[self performselector:@selector(delaymethod) withobject:nil afterdelay:2.0];

[nsobject cancelpreviousperformrequestswithtarget:self selector:@selector(delaymethod) object:nil];

[nsobject cancelpreviousperformrequestswithtarget:self];

1、延遲執行
+ (nstimer *)scheduledtimerwithtimeinterval:(nstimeinterval)ti target:(id)atarget selector:(sel)aselector userinfo:(nullable id)userinfo repeats:(bool)yesorno;

2、取消延遲執行
- (void)invalidate;
3、使用如下:
nstimer *timer = [nstimer scheduledtimerwithtimeinterval:2.0 target:self selector:@selector(delaymethod) userinfo:nil repeats:no];

[timer invalidate];

1、延遲執行
+ (void)sleepfortimeinterval:(nstimeinterval)ti;

2、取消延遲執行

sleep放入子執行緒,可以通過處理取消。

3、使用如下:

[nsthread sleepfortimeinterval:2.0];

[self delaymethod];

1、延遲執行
dispatch_after(dispatch_time(dispatch_time_now, (int64_t)(delayinseconds * nsec_per_sec)), dispatch_get_main_queue(), ^);
2、取消延遲執行

// to do

3、使用如下:

int64_t delayinseconds = 10.0; // 延遲的時間

/* * delta:

* * @parameter 1.時間參照,從此刻開始計時

* @parameter 2.延時多久,此處為秒級,還有納秒等: 10ull * nsec_per_msec

*/__weak typeof(self)weakself = self;

dispatch_after(dispatch_time(dispatch_time_now, (int64_t)(delayinseconds * nsec_per_sec)), dispatch_get_main_queue(), ^);

完整**:

- (void)allmethod );

}- (void)delaymethod

iOS點選事件重複執行(取消延遲執行函式)

需求 在需要執行乙個操作後,延遲3秒再次執行該操作的方法,void touchesbegan nsset touches withevent uievent event void touchesbegan nsset touches withevent uievent event1.performs...

iOS 延遲執行的幾種方法

void viewdidload void delaymenthod 注 此方法是一種非阻塞的執行方式,可以傳遞引數,未找到取消執行的方法。void viewdidload void delaymenthod 注 此方法是一種非阻塞的執行方式,可以傳遞引數,timer invalidate 取消執行...

iOS 開發中方法延遲執行的幾種方式

公用延遲執行方法 void delaymethod self performselector selector delaymethod withobject nil 可傳任意型別引數 afterdelay 2.0 注 此方法是一種非阻塞的執行方式,未找到取消執行的方法。nstimer timer n...