有個(gè)錯(cuò)誤
NSEvent* event = [NSApp nextEventMatchingMask : NSEventMaskAny untilDate : [NSDate distantPast] inMode : NSDefaultRunLoopMode dequeue:YES];
應(yīng)為
NSEvent *event = [NSApp nextEventMatchingMask:NSEventMaskAny untilDate:[NSDate distantFuture] inMode:NSDefaultRunLoopMode dequeue:YES];
用distantPast的NSDate的對(duì)象的話净薛,無(wú)論是否收到事件都會(huì)獲得一個(gè)NSEvent對(duì)象,這樣會(huì)導(dǎo)致循環(huán)中長(zhǎng)期空轉(zhuǎn)嚴(yán)重占用系統(tǒng)資源啊胶,而distantFuture的NSDate會(huì)一直阻塞直到接收事件,這樣是符合預(yù)期效果的垛贤。
GNUStep的-[NSApplication run]方法就是這樣設(shè)計(jì)的焰坪。
純代碼創(chuàng)建macOS應(yīng)用,及仿寫[NSApp run]一聘惦、前言 寫該篇文章的緣由是:我想手動(dòng)控制macOS的主程序循環(huán)某饰,用來添加自己想要的處理。正文 I ~ IV 部分 講解我理解macOS應(yīng)用結(jié)構(gòu)善绎。正文 V 部分 ...