Получение событий пользовательского интерфейса в классах C ++ - PullRequest
1 голос
/ 24 июля 2011

Я пишу Objective-C ++ в Xcode для iOS.Мой проект - это в основном классы C ++ и несколько классов Objective-C на самом высоком уровне.Мои классы C ++ содержат элементы пользовательского интерфейса Objective-C, и они нужны мне для получения событий пользовательского интерфейса.Возможно ли для элемента пользовательского интерфейса вызывать функцию-член C ++ напрямую?Т.е. есть ли эквивалент этого вызова для функции C ++:

[control addTarget:object action:@selector(action:) forControlEvents:event];    

Из того, что я понимаю, @selector мне здесь не поможет.Мне нужен другой способ заставить элемент управления вызывать мою функцию-член - существует ли она?

На данный момент я использую класс приемника Objective-C, член моих классов C ++, который получает события пользовательского интерфейсазатем вызывает мой класс C ++ соответствующим образом, но это кажется окольным путем для достижения этого.Если то, что я описал, невозможно, есть ли лучший способ сделать то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 31 октября 2011

Я думаю, вы уже нашли самое простое решение.Вы могли бы дополнительно инкапсулировать эту функциональность, внедрив мост Obj-C / C ++ в базовый класс C ++ и вывести из него любой из ваших классов бизнес-логики.чтобы сделать это на уровне выполнения Objective-C.Пусть ваш класс C ++ сгенерирует новый класс Objective C с objc_allocateClassPair(), добавит метод для обработки вашего действия с class_addMethod() и т. Д. (См. Справочник по Objective C * ).любая очевидная причина, по которой вы хотели бы пойти по этому пути, но хорошо знать об этом.

...