IMO, masalah dengan Objective-C tidak banyak kekurangan besar, sebagai kekurangan kecil (terutama sejak awal) dan kurangnya keuntungan yang dirasakan.
Objective-C adalah superset murni dari C, sehingga kode C dapat beralih ke Objective-C dengan mudah. Pola pikir untuk menggunakan Objective-C, bagaimanapun, berbeda dari pola pikir C banyak . Transisi dari C ke Objective-C mudah untuk kode tetapi tidak mudah sama sekali bagi banyak programmer. Programmer AC tidak dapat dengan mudah hanya memilih beberapa fitur kenyamanan baru di Objective-C dan mendapatkan produktivitas yang lebih baik segera - ia perlu belajar banyak "barang" baru sebelum ia bisa pergi ke mana saja.
C ++ membuat transisi untuk beberapa kode sedikit lebih sulit, tetapi transisi untuk sebagian besar programmer lebih mudah. Pemrogram C yang terbiasa berurusan dengan setiap detail kode mereka masih bisa melakukannya di C ++ sampai batas yang mereka inginkan. C ++ juga membuatnya mudah untuk menggunakan beberapa fitur baru (misalnya, menambahkan ctor untuk secara otomatis menginisialisasi anggota struct Anda) tanpa benar-benar mengubah cara berpikir Anda. Banyak puritan OO mendorong perubahan radikal dalam berpikir, tetapi banyak programmer C beralih ke C ++ tanpa melakukan hal semacam itu (setidaknya segera - dan sering kali, dari penampilan).
C ++ juga tampak jauh lebih akrab bagi kebanyakan programmer C. Itu menambahkan beberapa kata kunci baru, tetapi (terutama awal) kode masih sebagian besar tampak cukup akrab. Terlepas dari statusnya "superset murni", sebagian besar kode Objective-C terlihat cukup asing bagi kebanyakan programmer C. Banyak C ++ juga cukup mudah untuk dijelaskan dan dipahami dalam hal bagaimana hal-hal bekerja di C. Beralih ke Objective-C memiliki lebih banyak tempat yang tentang semua yang dapat Anda katakan adalah "percayalah padaku dan lupakan semua yang Anda pikir Anda tahu. "
Banyak keputusan desain di Objective-C juga membuatnya (agak) lebih lambat daripada C ++, terutama pada mesin yang relatif lama dengan prosesor lambat, memori terbatas, dll. Benar atau salah, itu juga dilihat sebagian besar sebagai produk perusahaan tunggal, di mana C ++ tersedia secara bebas untuk diimplementasikan oleh siapa saja dan semua orang.
Ini semua menyebabkan C ++ diadopsi cukup cepat sejak awal sehingga mencapai "massa kritis" cukup cepat, jadi (antara lain) itu menjadi pilihan yang jelas untuk banyak proyek hanya karena sudah menjadi banyak digunakan, terkenal kuantitas.
Objective-C belum pernah mencapai titik itu. Bahkan, itu sedang dalam perjalanan menuju memudar menjadi ketidakjelasan ketika Apple menghidupkannya kembali dengan hampir memaksanya pada siapa saja yang ingin mengembangkan untuk sistem mereka. Pangsa pasar Apple tidak cukup besar untuk itu sehingga benar-benar memberikan massa kritis - ceruk yang lebih besar. Ini adalah pilihan "default" hanya di mana / karena Apple membuatnya demikian.
Saya juga menambahkan bahwa setidaknya menurut saya, model objek Smalltalk-like Objective-C berarti bahwa pada dasarnya itu lebih banyak pesaing langsung ke Jawa daripada C ++. Ya, masih memiliki dasar-dasar C, dan ya Anda masih dapat menulis kode tingkat rendah tanpa menggunakan bahasa yang terpisah - tetapi C murni dan Objective-C nyata cukup berbeda sehingga kurang seperti satu bahasa daripada dua bahasa yang sama sekali berbeda yang kebetulan keduanya ditangani oleh kompiler tunggal (meskipun itu berguna bahwa keduanya dapat berbicara satu sama lain tanpa sesuatu seperti JNI untuk bergabung dengan mereka).