利用Event-Based 處理機(jī)制
現(xiàn)在的Mac apps 是利用Cocoa 事件系統(tǒng)或者Carbon 事件管理器护锤。(類似地,iPhone應(yīng)用利用由UIKit 框架提供的touch-based 事件系統(tǒng)沟饥。)你的應(yīng)用永遠(yuǎn)不要通過查詢系統(tǒng)來獲取事件。這樣做的話相當(dāng)?shù)托АJ聦?shí)上当悔,當(dāng)沒有事件處理時(shí),查詢代碼是100%的浪費(fèi)CPU時(shí)間√叽現(xiàn)代的event-based APIs 是基于以下目的而設(shè)計(jì)的:
1.提高應(yīng)用對用戶的響應(yīng)度
2.降低CPU使用率
3.最小化應(yīng)用的工作集--任意給定時(shí)間加載進(jìn)內(nèi)存的代碼業(yè)數(shù)量
4.允許系統(tǒng)積極有效的管理power
除了用戶事件以外盲憎,還應(yīng)該避免在其他情況查詢。在OS X and iOS 中線程利用run loops 對定時(shí)器胳挎,網(wǎng)絡(luò)事件與其它輸入性數(shù)據(jù)提供on-demand response饼疙。許多框架對某些作業(yè)使用異步編程模型,當(dāng)作業(yè)完成時(shí)慕爬,通知既定的處理函數(shù)或者方法窑眯。在OS X v10.6 and later屏积,dispatch sources 同樣提供了一種方式可使你異步接收重要事件并且在dispatch queue 執(zhí)行它們。