Использование UIKit из C / C ++ - PullRequest
2 голосов
/ 14 июня 2010

Возможно, вопросы уже задавались, но я хочу понять, ограничен ли каркас iPhone только Objective-C или к нему также можно получить доступ из кода C / C ++?

Например, возможно ли это?использовать стандартные элементы управления iPhone из кода C / C ++?Доступны ли стандартные классы, такие как NSArray, NSSet, из кода C / C ++?

Если они есть, может ли кто-нибудь дать ссылку на несколько примеров, как это сделать?

1 Ответ

4 голосов
/ 14 июня 2010

Вы можете смешивать Objective C с C ++. Просто переименуйте исходный файл в .mm.

Некоторые базовые классы, такие как NSArray и NSSet, являются бесплатными мостами для объектов CoreFoundation, таких как CFArray и CFSet. Последняя представляет собой чистую библиотеку C, которую вы можете использовать без ObjC.


UIKit - это чистый каркас Objective-C. Вы могли бы использовать UIKit с C и C ++, поскольку среда выполнения Objective C доступна из чистых функций C, таких как objc_msgSend, например,

id UIView = objc_getClass("UIView");
SEL alloc = sel_registerName("alloc");
id view = objc_msgSend(UIView, alloc);
// ...

но это не надежно, например

objc_msgSend(view, sel_registerName("setAlpha:"), 0.4);

будет не делать то, что вы хотите.

Вы можете изолировать часть пользовательского интерфейса и написать ObjC только для этой части. Создайте интерфейс C между пользовательским интерфейсом и бэкэндом, в котором вы можете использовать C ++ или любые (разрешенные) языки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...