La respuesta a tu pregunta no es técnica, sino histórica.
Steve Jobs abandona Apple y funda NExT basado en Objective C un nuevo lenguaje dinámico optimizado orientado a objetos - un gigante mejora a C, luego vuelve a Apple y Apple compra NExT y utiliza su núcleo para diseñar MAC OS X. MAC Los frameworks OS X e iOS están construidos en Objective-C.
Ahora, para los detalles técnicos es una cuestión diferente.
La tipificación dinámica, por ejemplo, presenta un arcoiris de potencial programático, pero requiere una gran cantidad de depuración desde el tiempo de compilación hasta el tiempo de ejecución, es decir, como el lenguaje es flexible, permite ejecutar aplicaciones que no son necesariamente concisas y/o coherente.
Por otro lado, Java resuelve todos los problemas de la búsqueda de Objective-C y le proporciona un lenguaje no dinámico con introspección, lo que le permite todo el poder del tipado dinámico y mantener un conjunto de reglas muy rígidas que lo alivia % de tu tiempo de depuración.
C y C++ son lenguajes malas del pasado
de Objective-C es un buen lenguaje del pasado
Java/C# son lenguas modernas
Se trata de ser un descenso a los infiernos que venir de una amplia Java/C# programando y teniendo que lidiar de nuevo con compiladores más descuidados para trabajar con ObjC, pero bueno, esa es mi penalización por querer desarrollar para el iPhone.
Permítanme aclarar: si se implementara Cocoa en C++ o Java, ¿las características del marco serían sustancialmente diferentes? o simplemente no es posible? – Maverick