Anda tidak dapat menulis aplikasi Kakao seluruhnya dalam C ++. Kakao sangat bergantung pada kemampuan pengikatan akhir dari Objective-C untuk banyak teknologi intinya seperti Pengikatan Nilai-Kunci, delegasi (gaya Kakao), dan pola tindakan target. Persyaratan pengikatan yang terlambat membuatnya sangat sulit untuk mengimplementasikan API Kakao dalam bahasa yang diketik dengan batasan waktu kompilasi seperti C ++ ⁱ. Anda tentu saja dapat menulis aplikasi C ++ murni yang berjalan di OS X. Aplikasi tersebut tidak dapat menggunakan Cocoa API.
Jadi, Anda memiliki dua opsi jika Anda ingin berbagi kode antara aplikasi C ++ di platform lain dan aplikasi berbasis Cocoa Anda. Yang pertama adalah menulis lapisan model di C ++ dan GUI di Cocoa. Ini adalah pendekatan umum yang digunakan oleh beberapa aplikasi yang sangat besar, termasuk Mathematica . Kode C ++ Anda dapat dibiarkan tidak berubah (Anda tidak perlu ekstensi apple "funky" untuk menulis atau mengkompilasi C ++ di OS X). Lapisan pengontrol Anda kemungkinan besar akan menggunakan Objective-C ++ (mungkin ekstensi Apple "funky" yang Anda maksud). Objective-C ++ adalah superset dari C ++, sama seperti Objective-C adalah superset dari C. Dalam Objective-C ++, Anda dapat membuat panggilan pesan gaya objc (seperti [some-objc-object callMethod];
) dari dalam fungsi C ++. Sebaliknya, Anda dapat memanggil fungsi C ++ dari dalam kode ObjC seperti:
@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
Anda dapat mengetahui lebih lanjut tentang Objective-C ++ di panduan bahasa Objective-C . Lapisan tampilan kemudian bisa murni Objective-C.
Opsi kedua adalah menggunakan toolkit C ++ lintas platform. The Qttoolkit mungkin sesuai dengan tagihan. Toolkit lintas platform umumnya dibenci oleh pengguna Mac karena mereka tidak mendapatkan semua detail tampilan dan nuansa dengan tepat dan pengguna Mac mengharapkan polesan di UI aplikasi Mac. Namun, Qt melakukan pekerjaan yang sangat bagus, dan bergantung pada audiens dan penggunaan aplikasi Anda, itu mungkin cukup baik. Selain itu, Anda akan kehilangan beberapa teknologi khusus OS X seperti Animasi Inti dan beberapa fungsionalitas QuickTime, meskipun ada perkiraan penggantian dalam API Qt. Seperti yang Anda tunjukkan, Carbon tidak akan ditransfer ke 64-bit. Sejak Qt diimplementasikan pada Carbon API, Trolltech / Nokia harus mem-port Qt ke Cocoa API agar kompatibel dengan 64-bit. Pemahaman saya adalah bahwa relase berikutnya dari Qt (saat ini dalam rilis candiate) menyelesaikan transisi ini dan kompatibel dengan 64-bit di OS X. Anda mungkin ingin melihat sumber Qt 4.5 jika Anda tertarik untuk mengintegrasikan C ++ dan Cocoa API.
ⁱ Untuk sementara waktu Apple membuat Cocoa API tersedia untuk Java, tetapi bridge membutuhkan penyetelan manual yang ekstensif dan tidak dapat menangani teknologi yang lebih maju seperti Key-Value Binding yang dijelaskan di atas. Saat ini diketik secara dinamis, bahasa terikat waktu proses seperti Python, Ruby, dll. Adalah satu-satunya pilihan nyata untuk menulis aplikasi Cocoa tanpa Objective-C (meskipun tentu saja jembatan ini menggunakan Objective-C di bawah tenda).