2013-04-03 3 views
0

У меня есть AXObserver зарегистрированы как так:AXObserverCallback элемент опорного

AXObserverCreate(pid, axObserverCallback, &_observer); 

Это метод обратного вызова:

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

И это, как я добавить уведомление:

 AXObserverAddNotification(_observer, app, kAXFocusedWindowChangedNotification, self); 

Я замечаю, что элемент, добавленный наблюдателю (для уведомления) (в приведенном выше примере «приложение»), похоже, не соответствует nd к одному набору в обратном вызове наблюдателя ("elementRef"). Похоже, это копия? По крайней мере, я не могу сравнивать их с ==, и если я их пропустил, они показывают другой адрес.

Есть ли способ сравнить AXUIElementRefs, которые являются копиями? (И это нормальное поведение, чтобы вернуть копию вместо оригинала?)

ответ

0

Как и все объекты Core Foundation, AXUIElementRefs следует сравнивать с помощью CFEqual(), а не путем проверки равенства указателя.