현재 이벤트 탭을 사용하는 코드를 작성 중입니다. 그것은 잘 작동하지만, 잘 설명되지 않았거나 100 % 잘 이해하지 못하는 몇 가지 옵션에 대해 몇 가지 질문이 있습니다. 가장 자주 설명 할 때, 이벤트 탭 절차는 "그냥해라."하지만 더 이상의 설명이 없으며 몇 가지 다른 가능성이 있음을 알았습니다. 그리고 사과 개발자 문서는 나에게 너무 많이 깨닫지 못했습니다 (너무 적거나 그래서 한 번에 너무 많은 정보를 원하시면 ...) :osX : runLoop 옵션 (이벤트 탭을 만들 때)
CFMachPortRef machPortRef = CGEventTapCreate(kCGSessionEventTap, kCGTailAppendEventTap, kCGEventTapOptionDefault, kCGEventMaskForAllEvents, eventTapCallback, NULL);
첫 번째 줄, 전혀 문제는 아주 분명하다.
//// -----> kCFAllocatorDefault or NULL ???
CFRunLoopSourceRef runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, machPortRef, 0);
1) 여기서, 난 항상 당신이 kCFAllocatorDefault
을 넣어해야한다고보고 있지만, 모든 문서의 상태는 우리가 NULL
을 통과 왜 "The allocator to use to allocate memory for the new object. Pass NULL or kCFAllocatorDefault to use the current default allocator."
는, 그 할당 자 또는 다른 악어에 대해 잘 알고있는 그래서하지 ??? 나는 NULL
이 매우 효율적인 할당자가 아니라고 가정합니다 ... (이것은 꽤 흥미로운 질문입니다, 그냥 호기심입니다).
//// -----> CFRunLoopGetMain() or CFRunLoopGetCurrent() ???
CFRunLoopRef runLoop = CFRunLoopGetMain();
//CFRunLoopRef runLoop = CFRunLoopGetCurrent();
2) CFRunLoopGetMain()
와 메인 루프와 CFRunLoopGetCurrent()
와 전류 루프를 받고의 차이는 무엇인가요 ??? 어떤 경우에 사용하는 것이 가장 좋습니까 ???
//// -----> kCFRunLoopCommonModes or kCFRunLoopDefaultMode
CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes);
//CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopDefaultMode);
3)과 kCFRunLoopCommonModes
kCFRunLoopDefaultMode
차이는 무엇입니까 ??? 내가 이해 한 바에 따르면 kCFRunLoopCommonModes
에는 kCFRunLoopDefaultMode
이 포함되어 있습니다. 그래서 언제 당신이 하나 또는 다른 사용합니까 ???
CGEventTapEnable(machPortRef, true);
은 도니는 다르게 당신의 탭을 활성화하는 것을 잊지 마십시오.
미리 감사드립니다. 나는 이것들이 분명하고 간결한 설명을 할 자격이 있다고 생각한다. 그것은 사람들에게 이벤트 도청에 들어가는 데 큰 도움과 시간 절약이다.
이러한 API에 대한 많은 문서가 있습니다. 이벤트 탭에 대한 문서를보고 있었습니까? 아니면'CFRunLoop'에 대한 문서를 보셨습니까? [CFRunLoop Reference] (https://developer.apple.com/library/ios/documentation/corefoundation/reference/CFRunLoopRef/index.html) [관련 개념 가이드] (https://developer.apple.com/library/ios) /documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html) –
고마워, 나는 두 번째 것을 보지 못했다 (개념적 가이드). –