iosrunloop機(jī)制 runloop中的source0和source1分別處理什么時間?
runloop中的source0和source1分別處理什么時間?source1 Apple創(chuàng)建一個系統(tǒng)來接受系統(tǒng)發(fā)送的事件。當(dāng)手機(jī)上發(fā)生觸摸、震動或鎖定時,系統(tǒng)將向應(yīng)用程序進(jìn)程(進(jìn)程通信)發(fā)送事件。
runloop中的source0和source1分別處理什么時間?
source1 Apple創(chuàng)建一個系統(tǒng)來接受系統(tǒng)發(fā)送的事件。當(dāng)手機(jī)上發(fā)生觸摸、震動或鎖定時,系統(tǒng)將向應(yīng)用程序進(jìn)程(進(jìn)程通信)發(fā)送事件。這就是為什么它被稱為基于端口的source1交付。端口是進(jìn)程端口,它可以在進(jìn)程中激活線程的runloop,比如在屏幕上點擊應(yīng)用程序的按鈕或屏幕,runloop就會被喚醒來處理觸摸事件。你可以做個實驗。向主線程的runloop中添加一個cfrunloop obserref,并使用switch輸出六個runloop狀態(tài)。此時,每次點擊屏幕,它都會輸出六個runloop狀態(tài),然后進(jìn)入睡眠狀態(tài)。
source0:執(zhí)行performselectors方法。如果在主線程performselectors中對子線程執(zhí)行任務(wù),則會在代碼中將事件發(fā)送到子線程的runloop。此時,如果子線程打開runloop,任務(wù)將被執(zhí)行。注意,performselector方法只能在子線程打開runloop時執(zhí)行。如果不在子線程中打開runloop,操作將失敗并崩潰。
以上是我個人的理解。如果你有任何問題,請指出
vue怎么解決在ios上屏幕滾動的問題?
這個問題的本質(zhì)可以追溯到IOS runloop?;瑒訒rRunloop切換模式。Nstimer和Scrollview默認(rèn)分為兩種模式,可以通過以下兩種方式解決:分別將計時器添加到兩種模式中;將計時器添加到頂部runloop的“common mode items”中,“common mode items”替換為runloop自動更新到具有“common”屬性的所有模式。