Berapa banyak pengetahuan C / C ++ yang dibutuhkan untuk pengembangan Objective-C / iPhone?

8

Pertama, sedikit latar belakang. Saya adalah pengembang .Net (C #) dan memiliki lebih dari 5 tahun pengalaman dalam pengembangan web dan aplikasi desktop. Saya ingin melihat perkembangan iPhone untuk beberapa waktu sekarang, tetapi karena satu dan lain hal selalu dilacak. Saya akhirnya memiliki proyek potensial di cakrawala, dan sekarang saya akan belajar banyak tentang hal ini.

Pertanyaan saya adalah ini: Saya belum melakukan pemrograman C / C ++ sejak masa sekolah saya, saya sudah tinggal di tanah yang dikelola sejak saat itu. Berapa banyak pengetahuan jika ada yang dibutuhkan untuk berhasil sebagai pengembang iOS? Jelas manajemen memori adalah sesuatu yang saya harus sadari (walaupun dengan iOS 5 tampaknya ada sesuatu yang disebut ARC yang seharusnya membuat hidup saya lebih mudah), tetapi apa lagi? Saya tidak hanya berbicara tentang API C (misalnya, untuk mendapatkan dosa angka, saya memanggil fungsi sin ()), itulah gunanya Google. Saya berbicara tentang idiom C / C ++ mendasar yang tidak disadari oleh pengembang C # rata-rata.

BFree
sumber
2
Mengapa ini ada hubungannya dengan C ++?
sdg
Dari apa yang saya baca, ada banyak API yang berinteraksi dengan pengembang iOS yang ditulis dalam C ++. Apakah itu tidak benar?
BFree
C atau Objective-C. Tidak diperlukan C ++.
Terry Wilcox
@BFree, Anda jarang perlu menggunakan C ++ untuk pengembangan iOS. Kecuali Anda melakukan sesuatu yang membutuhkan pustaka spesifik seperti OpenCV atau Irrlicht, Anda sebagian besar akan melakukan Objective-C. Cocoa Touch ditulis dalam Objective-C dan itu adalah kerangka kerja Apple yang paling sering Anda gunakan.
rightfold

Jawaban:

7

Jangan khawatir tentang itu. Jika Anda cukup tahu C untuk dapat menulis panggilan fungsi, memahami dan menulis ekspresi aritmatika, dan berurusan dengan pointer, Anda mungkin akan baik-baik saja. Anda masih harus belajar Objective-C, tentu saja, tetapi banyak kode yang akan Anda tulis akan lebih banyak Objective-C daripada yang lama biasa C. Membiasakan diri dengan gaya Objective-C dan belajar Cocoa Touch akan mengkonsumsi lebih banyak waktu Anda daripada menyikat C.

Saya biasanya memberi tahu orang-orang yang mulai dari nol untuk belajar C sebelum melompat ke Objective-C. Saya mendukung saran itu - belajar C akan mengajarkan Anda pengetahuan dasar yang Anda butuhkan untuk bekerja secara efektif di Objective-C. Anda perlu tahu apa fungsi itu, bagaimana menggunakan struktur kontrol seperti loop dan pernyataan kondisional, bagaimana berbagai tipe data dasar bekerja, apa itu struct dan sebagainya. Dan karena semua C adalah permainan yang adil dalam Objective-C, semakin banyak C yang Anda tahu semakin baik Anda akan siap untuk memahami kode yang mungkin Anda temui. Yang mengatakan, banyak tugas dilakukan secara berbeda di Objective-C, sehingga idiom standar C tidak selalu idiom standar Objective-C. NSString dan NSArray menggantikan array gaya-C. Pointer ada di mana-mana, tetapi mereka digunakan terutama untuk merujuk ke objek - aritmatika pointer tidak sering muncul.

Hal yang sama berlaku untuk C ++ ... Anda tidak perlu banyak C ++ untuk bergaul dengan baik di Objective-C. Di beberapa titik di masa depan, Anda mungkin perlu menambah pengetahuan C ++ untuk mengintegrasikan beberapa kode C ++ yang ada ke dalam aplikasi, dan pada titik itu Anda mungkin perlu meluangkan waktu untuk belajar, tetapi jangan biarkan kurangnya pengetahuan C ++ berhenti Anda mencoba tangan Anda di pemrograman iOS.

Caleb
sumber
1

Bukan jawaban lengkap, tetapi Anda perlu memeriksa pdf ini jika Anda akan belajar Objective-C.

Ini adalah bacaan yang sangat mudah jika Anda suka membaca untuk belajar bahasa, bukan melihat kode contoh atau contoh. Selama Anda memiliki pemahaman tentang OOP maka mengambil Obj-C lancar. Hal yang benar-benar membuat saya berhenti belajar tentang dev iPhone adalah penggunaan Xcode, yang merupakan cerita lain ....

Apple Obj-C

Trevor Arjeski
sumber
0

Tergantung.

Subset bahasa pemrograman (kadang-kadang disebut "bagian yang baik") biasanya berfungsi dengan baik jika tujuan Anda tidak mendorong batas subset itu.

Jika Anda ingin melakukan hal-hal UI yang sederhana (hal-hal yang bisa Anda lakukan di aplikasi web), tetap menggunakan tipe data Cocoa dan Foundation, dan Anda menulis kode bebas bug, Anda mungkin bisa mendapatkan dengan mengetahui sedikit dari C di bawah Objective C .

Namun, jika Anda ingin melakukan pemrosesan atau analisis audio, video, gambar (dll) iOS, API dan kode contoh referensi yang kemungkinan Anda akan kerjakan sebagian besar dalam bahasa C, dan C idiomatis.

Tetapi Objective C adalah superset ketat dari C, sehingga kesalahan ketik dan bug dapat memanifestasikan dirinya di setiap tingkat lingkungan bahasa. Jika kode Anda memiliki bug, maka Anda mungkin perlu mengetahui hal-hal secara mendalam di pointer C, tipe data, dan level tumpukan untuk menganalisis crash dan debug itu. Objective C tidak "dikelola" dan dengan demikian orang dapat membuat kekacauan berkerut dalam memori baik atau tujuan atau sebagai kecelakaan total.

hotpaw2
sumber