如果沒有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 ...