Доступ к частному методу экземпляра из класса - PullRequest
0 голосов
/ 09 июля 2020

У меня есть метод экземпляра, который не объявлен в файле заголовка (частный), который я все еще хочу использовать из любого другого метода экземпляра в этом классе, например

Заголовок с publi c методами

@interface Tap : NSObject

- (void)enable;
- (void)disable;

@end

Class Impl

@implementation Tap

- (CGEventRef)callback:(CGEventTapProxy)proxy :(CGEventType)type :(CGEventRef)event :(void *)context {
  ...
}

- (void)enable {
  CGEventTapCreate(tap, place, options, mask, /* How to pass the callback here? */, context);
}

...

@end

похоже, что я не могу просто использовать что-то вроде self.callback, так как я могу передать этот метод в EventTap?

1 Ответ

1 голос
/ 09 июля 2020

нет проблем со смешиванием C в вашей реализации

CGEventRef eventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
    
    // when userinfo is used as reference to the object
    Tap *tap = (__bridge Tap *)refcon;
    [tap exampleMethod];

    // your logic here ..
    
    return event;
}

- (void)enable {
    void *userinfo = (__bridge void *)(self);
    CGEventTapCreate(tap, place, options, mask, (CGEventTapCallBack)eventCallback, userinfo);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...