0

我有一个这样注册的 AXObserver:

 AXObserverCreate(pid, axObserverCallback, &_observer);

这是回调方法:

static void axObserverCallback(AXObserverRef observer, AXUIElementRef elementRef, CFStringRef notification, void *self) { .. }

这就是我添加通知的方式:

        AXObserverAddNotification(_observer, app, kAXFocusedWindowChangedNotification, self);

我注意到的是添加到观察者(用于通知)(在上述情况下为“app”)的元素似乎与观察者回调中的一组元素(“elementRef”)不对应。好像是副本?至少我无法将它们与 == 进行比较,如果我 NSLog 它们显示不同的地址。

有没有办法比较作为副本的 AXUIElementRefs?(这是返回副本而不是原件的正常行为吗?)

4

1 回答 1

0

与所有 Core Foundation 对象一样,AXUIElementRefs 应该使用 来比较CFEqual(),而不是通过检查指针是否相等。

于 2013-04-03T23:44:54.000 回答