Apakah mungkin untuk memprogram iPhone di C ++

124

Saya mendukung keragaman bahasa, tetapi Tujuan C tidak masuk akal. Jadi saya penasaran: apakah mungkin untuk membuat kode aplikasi iPhone dengan C ++ saat menggunakan Cocoa API, dll?

Dmitri Nesteruk
sumber

Jawaban:

57

Jawaban singkatnya, ya, semacam itu. Anda dapat menggunakan Objective-C ++, yang dapat Anda baca di Apple Developer Connection.

Jika Anda sudah mengetahui C ++, mempelajari Objective-C akan sangat sederhana, jika Anda memutuskan untuk mencobanya. Info lebih lanjut tentang topik itu ada di ADC juga.

Robert S.
sumber
1
dapatkah Anda merekomendasikan situs web atau buku yang ditujukan untuk pemrogram C ++ berpengalaman untuk mempelajari Objective-C? Saya berhasil menggabungkan beberapa aplikasi uji bersama-sama, tetapi saya menemukan sintaksnya sedikit mundur dan saya yakin bahwa saya melakukan hal-hal yang menyebabkan kebocoran memori dll hanya karena kurangnya pengetahuan tentang Objective-C
Lea Hayes
3
@LeaHayes Buku gratis berjudul "From C ++ to Objective-C". Mengasumsikan Anda mengetahui C ++ dan kemudian memberi tahu Anda bagaimana hal-hal dilakukan secara berbeda di Objective-C. pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf (ini adalah terjemahan bahasa Inggris dari bahasa Prancis asli)
olafure
61

Meskipun Objective-C pada awalnya tampak "gila", saya mendorong Anda untuk tetap menggunakannya. Begitu Anda memiliki momen "a-ha", tiba-tiba semuanya mulai masuk akal. Bagi saya, butuh sekitar 2 minggu untuk memfokuskan konsentrasi Objective-C untuk benar-benar memahami kerangka kerja Kakao, bahasanya, dan bagaimana semuanya cocok satu sama lain. Tapi begitu saya benar-benar "mendapatkannya", itu sangat menarik.

Kedengarannya klise, tapi itu benar. Bertahanlah.

Tentu saja, jika Anda membawa pustaka C ++ atau kode C ++ yang sudah ada, Anda dapat menggunakan modul tersebut dengan Objective-C / Objective-C ++.

Mitch Haile
sumber
42

Saya menggunakan Objective-C untuk menampar UI bersama.
Tapi nyali kode masih ditulis dalam C ++.

Itulah tujuan utama Objective-C antarmuka UI dan penanganan kejadian.
Dan itu bekerja dengan baik untuk tujuan itu.

Saya masih suka C ++ sebagai backend untuk kodenya (tapi itu terutama karena saya suka C ++) Anda bisa dengan mudah menggunakan Objective-C untuk backend aplikasi juga.

Martin York
sumber
9
@Spanky: Bagaimana o saya melakukan apa sebenarnya. Anda dapat menulis C normal dalam file * .m. Anda dapat menulis C ++ normal dalam file * .mm (Objective-C ++). Di dalam file Objective-C (++) Anda dapat menggunakan file normal #include <XXX>seperti C / C ++.
Martin York
28

Pertama, mengatakan Objective-C adalah "gila" itu lucu- Saya memiliki buku Bjarne Stroustrup C ++ yang duduk di sisi saya yang berdurasi 1020 halaman. PDF Apple tentang Objective-C adalah 141.

Jika Anda ingin menggunakan UIKit, akan sangat-sangat sulit bagi Anda untuk melakukan apapun di C ++. Aplikasi iPhone serius apa pun yang sesuai dengan UI Apple akan membutuhkan bagian UI-nya untuk ditulis dalam Objective-C. Hanya jika Anda menulis game OpenGL, Anda dapat menggunakan C / C ++ hampir seluruhnya.

dnolen
sumber
30
Sejak kapan dokumentasi yang kurang adalah hal yang baik? "Bahasa Pemrograman C ++" sangat menyeluruh dan juga mendokumentasikan STL.
Timmmm
2
@Timmmm: Sejak K&R membuat poin itu di depan menjadi hal-hal penting dalam buku mereka. Objective-C adalah bahasa yang jauh lebih kecil daripada C ++, dengan banyak manfaat yang sama (dan beberapa manfaat lainnya). Semuanya ada pengorbanan, tentu saja. Tetapi dokumentasi yang minim membuat Obj-C cukup mudah bagi orang-orang berpengalaman C (atau C ++) untuk mempercepat prosesnya.
Ben Zotto
62
Maaf, tapi ObjC gila. Desakan pada cara yang sama sekali berbeda untuk mendeklarasikan fungsi, penggunaan tanda kurung. Ini berbeda tanpa manfaat. Mereka bisa saja menyusun bahasa efektif yang sama tanpa sintaks yang konyol. Mereka memilih untuk tidak melakukannya. Jadi itu gila.
Rhubarb
13
@Rhubarb - Meskipun saya suka Objective-C, saya harus setuju bahwa sintaks yang aneh itu tidak ada gunanya.
Raphael
@Rhubarb, Yup, ingat Apple adalah perusahaan yang muncul dengan kegilaan itu, dan Apple berbeda hanya untuk tujuan menjadi berbeda.
SeanRamey
14

Memiliki beberapa pengalaman tentang ini, Anda memang dapat menggunakan kode C ++ untuk kode "inti" Anda, tetapi Anda harus menggunakan objektif-C untuk semua hal khusus iPhone.

Jangan mencoba memaksa Objective-C untuk bertindak seperti C ++. Pada awalnya tampaknya bagi Anda ini mungkin, tetapi kode yang dihasilkan benar-benar tidak akan berfungsi dengan baik dengan Cocoa, dan Anda akan menjadi sangat bingung tentang apa yang sedang terjadi. Luangkan waktu untuk belajar dengan benar, tanpa menggunakan C ++, cara membangun aplikasi GUI dan iPhone, lalu tautkan di basis C ++ Anda.

Chris Jefferson
sumber
3

Anda harus menggunakan Objective C untuk berinteraksi dengan Cocoa API, jadi tidak ada pilihan. Tentu saja, Anda dapat menggunakan C ++ sebanyak yang Anda suka di belakang layar (Objective C ++ membuatnya mudah).

Ini memang bahasa yang gila, tapi juga ... menyenangkan untuk digunakan setelah Anda sedikit terbiasa. :-)

Frederik Slijkerman
sumber
2

Saya sedang dalam proses mem-porting aplikasi Android intensif komputasi yang ditulis dalam Java ke iOS6. Saya melakukan ini dengan mem-porting bagian non-UI dari Java ke C ++, menulis bagian UI (minimal) di Obj-C, dan membungkus yang pertama dalam antarmuka (kecil) C menggunakan teknik C / C ++ standar, sehingga itu dapat diakses dari Obj-C, yang bagaimanapun juga merupakan superset dari C.

Ini telah efektif sejauh ini, dan saya belum menemukan gotcha. Tampaknya ini merupakan pendekatan yang sah, karena Xcode memungkinkan Anda membuat kelas C ++ serta kelas Obj-C, dan beberapa kode sampel resmi melakukan hal-hal seperti ini. Saya tidak perlu keluar dari antarmuka yang didukung secara resmi untuk melakukan ini.

Tampaknya tidak akan banyak keuntungan dari menulis kode UI saya yang tersisa di C ++ bahkan jika memungkinkan, mengingat bantuan yang diberikan kepada Anda oleh pembuat antarmuka di Xcode, jadi jawaban saya adalah Anda dapat menggunakan C ++ untuk hampir semua aplikasi Anda, atau sebanyak yang Anda anggap sesuai / nyaman.

JulianSymes
sumber
2

Ya, tetapi Berpikir bahwa Anda dapat memprogram setiap jenis program dalam satu bahasa adalah ide yang salah kecuali Anda menulis program yang sangat sederhana. Tujuan C adalah untuk Kakao karena C # untuk .NET, Menggunakan alat yang tepat untuk pekerjaan yang tepat, Mencoba membuat C ++ berinteraksi dengan Kakao melalui penulisan kode penghubung dan mencoba membuat kode C ++ berperilaku sesuai dengan persyaratan Kakao bukanlah ide yang baik juga tidak mengharapkan C ++ kinerja dari Tujuan C adalah. Anda harus mencoba merancang tata letak dan arsitektur aplikasi dengan tetap melihat keterampilan yang ada dan menentukan bagian mana yang harus ditulis dalam bahasa mana kemudian membangunnya dengan sesuai.

Bilal Ahsan
sumber
0

Saat ini saya sedang menulis kerangka kerja Objective-C ++ yang disebut Objective-X, yang memungkinkan PURE C ++ iPHONE PROGRAMMING. Anda bisa melakukan seperti ini:

#import "ObjectiveX.h"

void GUIApplicationMain() {    
    GUIAlert Alert;
    GUILabel Label;
    GUIScreen MainScreen;

    Alert.set_text(@"Just a lovely alert box!");
    Alert.set_title(@"Hello!");
    Alert.set_button(@"Okay");
    Alert.show();

    Label.set_text(@"Ciao!");
    Label.set_position(100, 200, 120, 40);

    MainScreen.init();
    MainScreen.addGUIControl(Label.init());    
}

dan kompilasi menggunakan opsi baris perintah yang sesuai dari GCC. Saya sudah menyusun aplikasi helloworld ini & itu w0rkX0rz seperti pesona. ;-) Ini akan segera tersedia di GoogleCode. Telusuri Objective-X atau kunjungi http://infotronix.orgfree.com/objectivex kira-kira. seminggu kemudian!

URL yang diperbarui (tetapi tampaknya tidak aktif): http://code.google.com/p/objectivex/

Arpad Goretity
sumber
4
Mengapa tidak menunggu dengan posting sampai itu benar-benar tersedia?
Georg Fritzsche
8
Kedua link 404 sekarang
Zhao Xiang
1
Menurut SourceForge: "Mulai 2014-01-24, proyek ini tidak lagi dalam pengembangan aktif." sourceforge.net/projects/objectivex
JAL
0

Ini mungkin sedikit offtopic, tapi bagaimanapun juga. Anda dapat memprogram c ++ langsung di perangkat iOS. Lihat aplikasi CppCode ios - http://cppcode.info . Saya percaya mempelajari c dan c ++ dan objektif-c nanti akan membantu.

4ntoine
sumber