IOS延時執行的幾種方式比較

2021-07-29 22:19:38 字數 1036 閱讀 4769

四種延時執行某函式的方法及其一些區別。假如延時1秒時間執行下面的方法。

- (void)delaymethod

[self performselector:@selector(delaymethod) withobject:nil afterdelay:1.0f];

此方式要求必須在主線程中執行,否則無效。

是一種非阻塞的執行方式,

暫時未找到取消執行的方法。

[nstimer scheduledtimerwithtimeinterval:1.0f target:self selector:@selector(delaymethod) userinfo:nil repeats:no];

此方式要求必須在主線程中執行,否則無效。

是一種非阻塞的執行方式,

可以通過nstimer類的- (void)invalidate;取消執行。

[nsthread sleepfortimeinterval:1.0f]; [self delaymethod];

此方式在主線程和子執行緒中均可執行。

是一種阻塞的執行方式,

建方放到子執行緒中,以免卡住介面

沒有找到取消執行的方法。

double delayinseconds = 1.0; 

__block viewcontroller* bself = self;

dispatch_time_t poptime = dispatch_time(dispatch_time_now, (int64_t)(delayinseconds * nsec_per_sec));

dispatch_after(poptime, dispatch_get_main_queue(), ^(void));

此方式在可以在引數中選擇執行的執行緒。

是一種非阻塞的執行方式,

沒有找到取消執行的方法。

重新延時執行的Js 實現

1.autocomplete 外掛程式,當使用者的輸入空閒0.5s 時,才向服務傳送請求。而不是使用者輸入每乙個字元都要請求伺服器。2.懶載入時,使用者拖動滾動條空閒0.5s時,才遍歷懶載入的img元素,這樣操作比較平滑。對每乙個操作,定義乙個唯一操作碼,重新延時執行時,清空該操作碼的執行體。重新定...

程式開機延時執行的指令碼

今天因為實施需要,一台裝置聯網是通過寬頻認證的,而我們的程式是放在開機啟動項中,所以導致程式啟動時,寬頻還沒連上網路程式已經啟動,程式報 網路 連不上服務錯誤 echo off ping 127.0.0.1 n 60 nul start cmd k c users lenovo desktop te...

Java專案啟動時執行指定方法的幾種方式

這個註解呢,可以在spring載入這個類的時候執行一次。來看一下下方 123 4567 891011 1213 1415 1617 1819 2021 component public class test 我第二個執行 autowired private t t 我第三個個執行 postconst...