IMO, vấn đề với Objective-C không có quá nhiều thiếu sót lớn, vì những thiếu sót nhỏ (đặc biệt là sớm) và thiếu các lợi thế nhận thức.
Objective-C là một superset thuần túy của C, vì vậy mã C có thể dễ dàng chuyển sang Objective-C. Tuy nhiên, tư duy sử dụng Objective-C khác với tư duy C rất nhiều . Việc chuyển đổi từ C sang Objective-C dễ dàng cho mã nhưng không dễ dàng đối với nhiều lập trình viên. Lập trình viên AC không thể dễ dàng chọn một vài tính năng tiện lợi mới trong Objective-C và có năng suất tốt hơn gần như ngay lập tức - anh ta cần học nhiều "công cụ" mới trước khi có thể đi đến bất cứ đâu.
C ++ làm cho việc chuyển đổi cho một số mã khó khăn hơn một chút, nhưng quá trình chuyển đổi đối với hầu hết các lập trình viên dễ dàng hơn nhiều. Các lập trình viên C đã quen với việc xử lý mọi chi tiết mã của họ vẫn có thể làm như vậy trong C ++ đến chính xác mức độ họ muốn. C ++ cũng giúp bạn dễ dàng sử dụng một số tính năng mới (ví dụ: thêm một ctor để tự động khởi tạo các thành viên trong cấu trúc của bạn) mà không thực sự thay đổi cách suy nghĩ của bạn. Rất nhiều người theo chủ nghĩa thuần túy OO đã thúc đẩy những thay đổi căn bản trong suy nghĩ, nhưng rất nhiều lập trình viên C đã chuyển sang C ++ mà không làm bất cứ điều gì tương tự (ít nhất là ngay lập tức - và thường là, từ vẻ bề ngoài của mọi thứ).
C ++ cũng trông quen thuộc hơn nhiều đối với hầu hết các lập trình viên C. Nó đã thêm một vài từ khóa mới, nhưng (đặc biệt là từ rất sớm), mã vẫn chủ yếu trông khá quen thuộc. Mặc dù có trạng thái "superset thuần túy", hầu hết mã Objective-C trông khá xa lạ với hầu hết các lập trình viên C. Rất nhiều C ++ cũng khá dễ giải thích và hiểu theo cách mọi thứ hoạt động trong C. Chuyển sang Objective-C có nhiều nơi hơn mà tất cả những gì bạn có thể nói là "hãy tin tôi và quên mọi thứ bạn nghĩ. "
Nhiều quyết định thiết kế trong Objective-C cũng khiến nó (phần nào) chậm hơn C ++, đặc biệt là trên các máy tương đối cũ với bộ xử lý chậm, bộ nhớ hạn chế, v.v ... Đúng hay sai, nó cũng được xem chủ yếu là một sản phẩm của một công ty, trong đó C ++ được cung cấp miễn phí cho bất kỳ ai và mọi người thực hiện.
Tất cả những điều này dẫn đến việc C ++ được thông qua đủ nhanh vì nó đã đạt được "khối lượng quan trọng" khá nhanh, vì vậy (trong số những thứ khác), nó trở thành lựa chọn rõ ràng cho rất nhiều dự án chỉ vì nó đã được sử dụng rộng rãi, nổi tiếng số lượng.
Mục tiêu-C chưa bao giờ đạt đến điểm đó. Trên thực tế, nó đang trên đường mờ dần đi khi bị che khuất khi Apple hồi sinh nó bằng cách buộc nó vào bất cứ ai muốn phát triển cho hệ thống của họ. Mặc dù vậy, thị phần của Apple không đủ lớn để thực sự mang lại cho nó khối lượng quan trọng - chỉ là một phân khúc lớn hơn. Đây chỉ là lựa chọn "mặc định" trong trường hợp / vì Apple làm cho nó trở nên như vậy.
Tôi cũng nói thêm rằng ít nhất theo ý kiến của tôi, mô hình đối tượng giống như Smalltalk của Objective-C có nghĩa là về mặt hiệu quả, nó là đối thủ cạnh tranh trực tiếp với Java nhiều hơn C ++. Vâng, nó vẫn có nền tảng C và có, bạn vẫn có thể viết mã cấp thấp mà không cần sử dụng ngôn ngữ riêng - nhưng C thuần túy và Objective-C thực sự khác nhau đến nỗi nó giống một ngôn ngữ đơn hơn hai ngôn ngữ hoàn toàn khác nhau xảy ra với cả hai được xử lý bởi một trình biên dịch duy nhất (mặc dù thật tiện lợi khi cả hai có thể nói chuyện với nhau mà không cần một cái gì đó như JNI để tham gia cùng họ).