2015-11-06 38 views
0

我正在開發一個工具欄應用程序,我想要一個全局快捷方式。我發現只有通過使用Carbon事件管理才能實現此功能,幸運的是,我發現了一個可可包裝(DDHotKey)。但是,我無法讓它工作。 這裏我在做什麼:Xcode 7中的DDHotKey

DDHotKeyCenter * center = [[DDHotKeyCenter alloc] init]; 
DDHotKey *key= [c registerHotKeyWithKeyCode:1 modifierFlags:NSControlKeyMask target:self action:@selector(print) object:nil]; 

此代碼後,關鍵的變量是零表明出事了。我也嘗試調試,發現registerHotKeyWithKeyCode甚至沒有被調用 - 在其實現中的斷點不會被觸發。

需要提及的是我在項目設置中包含了Carbon框架。

DDHotKey文檔不是很全面,所以我堅持了這一點。

回答

2

看起來,DDHotKeyCenter意味着通過單身方法+[DDHotKeyCenter sharedHotKeyCenter]訪問。由於您嘗試使用alloc/init創建新實例,因此返回nil。

的原因可以在該方法中+[DDHotkeyCenter allocWithZone:]找到:

+ (id)allocWithZone:(NSZone *)zone { 
    return sharedHotKeyCenter; 
} 

+allocWithZone返回僅在+sharedHotkeyCenter方法初始化一個實例變量。