[英](Mac) creating keyboard events causes memory leaks
每次我使用Quartz Event Services创建键盘事件时,我的应用程序的内存使用量都会永久增加。
以下是无限循环内有问题的代码:
int keyCode = 0;
BOOL keyDownBool = FALSE;
while (TRUE) {
/* creating a keyboard event */
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStatePrivate);
CGEventRef keyboardEvent =
CGEventCreateKeyboardEvent(source, (CGKeyCode)keyCode, keyDownBool);
CFRelease(source);
CFRelease(keyboardEvent);
}
Instruments.app
表示没有内存泄漏...
这里有什么问题?
谢谢您的帮助!
好的,解决方案非常简单。 您只需要创建一次CGEventSourceRef
,然后就可以在每次要发布事件时重用它。 CGEventSourceRef
遍地创建CGEventSourceRef
会导致“泄漏”。
正确的代码如下所示:
int keyCode = 0;
BOOL keyDownBool = FALSE;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStatePrivate);
while (TRUE) {
/* creating a keyboard event */
CGEventRef keyEvent =
CGEventCreateKeyboardEvent(source, (CGKeyCode)keyCode, keyDownBool);
CFRelease(keyEvent);
}
感谢@Willeke的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.