Ви не можете написати заявку на какао повністю на C ++. Какао в значній мірі покладається на пізні можливості зв’язування Objective-C для багатьох його основних технологій, таких як Прив'язка Ключових Значень, Делегатів (стиль Какао) та Цільова дія. Вимоги до пізнього прив'язування дуже ускладнюють реалізацію API Cocoa в мові, яка вводить час компіляції, набраною мовою, як C ++ ⁱ Звичайно, ви можете написати чистий додаток C ++, який працює на OS X. Він просто не може використовувати API какао.
Отже, у вас є два варіанти, якщо ви хочете поділитися кодом між додатками C ++ на інших платформах та вашим додатком на основі какао. Перший - написати шар моделі на C ++ та GUI у какао. Це загальний підхід, який застосовують деякі дуже великі програми, зокрема Mathematica . Ваш код C ++ можна залишити без змін (для запису чи компіляції C ++ в OS X вам не потрібні "прикольні" розширення яблук). Ваш рівень контролера, ймовірно, використовуватиме Objective-C ++ (можливо, "фанкі" розширення Apple, на яке ви посилаєтесь). Objective-C ++ - це набір C ++, подібно до того, як Objective-C - це супернабір C. У Objective-C ++ ви можете здійснювати передачу дзвінків у стилі objc (наприклад [some-objc-object callMethod];
) зсередини функції C ++. І навпаки, ви можете викликати функції C ++ з коду ObjC, наприклад:
@interface MyClass {
MyCPPClass *cppInstance;
}
@end
@implementation MyClass
- (id)init {
if(self = [super init]) {
cppInstance = new MyCPPClass();
}
return self;
}
- (void) dealloc {
if(cppInstance != NULL) delete cppInstance;
[super dealloc];
}
- (void)callCpp {
cppInstance->SomeMethod();
}
@end
Докладніше про Objective-C ++ можна дізнатися з посібника з мови Objective-C . Потім шар перегляду може бути чистим Objective-C.
Другий варіант - використання кросплатформенного набору інструментів C ++. Qtінструментарій може відповідати рахунку. Крос-платформні набори інструментів, як правило, зневажають користувачів Mac, оскільки вони не отримують всі деталі зовнішнього вигляду та правильності, а користувачі Mac очікують, що польська мова в інтерфейсі програм Mac. Qt робить напрочуд гарну роботу, однак, залежно від аудиторії та використання вашого додатка, це може бути досить добре. Крім того, ви втратите деякі ОС-технології, такі як Core Animation та деякі функції QuickTime, хоча в API Qt є приблизні заміни. Як ви вказуєте, Carbon не буде переноситься на 64-розрядні. Оскільки Qt реалізований на Carbon API, Trolltech / Nokia повинні були перенести Qt до API какао, щоб зробити його 64-бітним сумісним. Я розумію, що наступний реферат Qt (наразі випускається кандидатом) завершує цей перехід і сумісний з 64-розрядною версією OS X. Ви можете ознайомитись із джерелом Qt 4.5, якщо вам цікаво інтегрувати C ++ та API Cocoa.
Apple На деякий час Apple зробила Java доступним для API какао, але міст потребував широкої налаштування вручну, і він не зміг впоратися з більш передовими технологіями, такими як "Ключові значення", описані вище. В даний час динамічно типізовані мови, пов’язані з виконанням часу, такі як Python, Ruby і т. Д. - єдиний реальний варіант написання програми для какао без Objective-C (хоча, звичайно, ці мости використовують під кришкою Objective-C).