iOS 學習筆記 RunLoop基礎

2021-07-24 19:40:51 字數 2084 閱讀 9274

如果沒有runloop

int main(int argc, char * argv)
int main(int argc, char * argv)  while (running);

return

0;}

/*

cf的記憶體管理(core foundation)

1.凡是帶有create、copy、retain等字眼的函式,建立出來的物件,都需要在最後做一次release

* 比如cfrunloopobservercreate

2.release函式:cfrelease(物件);

*/

runloop相關類

系統預設註冊了5個mode:

uitrackingrunloopmode:介面跟蹤 mode,用於 scrollview 追蹤觸控滑動,保證介面滑動時不受其他 mode 影響

gseventreceiverunloopmode: 接受系統事件的內部 mode,通常用不到

kcfrunloopcommonmodes: 這是乙個佔位用的mode,不是一種真正的mode

分類

nstimer *timer = [nstimer timerwithtimeinterval:2.0 target:self selector:@selector(run) userinfo:nil repeats:yes];

// 定時器只執行在nsdefaultrunloopmode下,一旦runloop進入其他模式,這個定時器就不會工作

// [[nsrunloop currentrunloop] addtimer:timer formode:nsdefaultrunloopmode];

// 定時器會跑在標記為common modes的模式下

// 標記為common modes的模式:uitrackingrunloopmode和kcfrunloopdefaultmode

[[nsrunloop currentrunloop] addtimer:timer formode:nsrunloopcommonmodes];

// 建立observer

cfrunloopobserverref observer = cfrunloopobservercreatewithhandler(cfallocatorgetdefault(), kcfrunloopallactivities, yes, 0, ^(cfrunloopobserverref observer, cfrunloopactivity activity) );

// 新增觀察者:監聽runloop的狀態

cfrunloopaddobserver(cfrunloopgetcurrent(), observer, kcfrunloopdefaultmode);

// 釋放observer

什麼是runloop?

runloop 應用場景

//第一種方法

self

.thread = [[xmgthread alloc] initwithtarget:self selector:@selector(execute) object:nil];

[self

.thread start];

- (void)execute

//第二中方法

- (void)touchesbegan:(nsset *)touches withevent:(uievent *)event

- (void)execute

}

iOS 讓你認識RunLoop

1.什麼是runloop,他是幹什麼用的 runloop可以理解為cocoa下的一種訊息迴圈機制,用來處理各種訊息事件,我們在開發的時候並不需要手動去建立乙個runloop,因為框架為我們建立了乙個預設的runloop,通過 nsrunloop currentrunloop 我們可以得到乙個當前執行...

多執行緒學習筆記4 RunLoop

基本作用 runloop處理邏輯 官方版 runloop物件 ios中有2套api來訪問和使用runloop core foundation nsrunloop和cfrunloopref都代表著runloop物件 nsrunloop是基於cfrunloopref的一層oc包裝,所以要了解runloo...

IOS 多執行緒 RUNLOOP 機制 二

二,何時使用run loop 對於輔助線程,在需要和執行緒有更多互動時,才使用run loop。比如 1 使用埠或者自定義輸入源來和其他執行緒通訊 2 使用執行緒定時器 3 cocoa中使用任何performselector.的方法 參考 table performing selectors on ...