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