公用延遲執行的方法:
- (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...