Pregunta en HN: ¿Cuántos de ustedes, desarrolladores de Apple, siguen usando Objective-C?

Los desarrolladores de plataformas de Apple están divididos entre seguir con Objective-C y adoptar Swift para el trabajo en iOS y macOS. Muchos dependen de Objective-C para bases de código heredadas grandes y estables, una mejor interoperabilidad con C/C++, compilación más rápida y compatibilidad del código fuente a largo plazo, mientras que otros prefieren Swift por sus funciones modernas, un sistema de tipos más seguro y el acceso a nuevas APIs que solo existen en Swift. Hay un amplio acuerdo en que las apps nuevas suelen escribirse en Swift, pero el conocimiento de Objective-C sigue siendo valioso para mantener software existente y entender el comportamiento de sistemas de nivel inferior.

Dónde sigue usándose Objective-C

  • Muchas aplicaciones en producción (especialmente las más antiguas y algunas de escala “AAA”/FAANG) todavía tienen grandes bases de código en ObjC.
  • Algunos equipos usan ObjC por defecto para SDKs, integraciones multiplataforma C/C++, trabajo específico de macOS y APIs de sistema de bajo nivel.
  • ObjC es común en apps heredadas de Mac, apps de iOS de larga vida anteriores a Swift y herramientas internas; varios participantes asumen que la propia Apple todavía usa mucho ObjC y C.
  • Algunos aficionados y desarrolladores individuales crean nuevas apps completamente en ObjC, a menudo por familiaridad o simplicidad.

Razones por las que los desarrolladores se quedan con Objective-C

  • Tiempos de compilación rápidos y predecibles, y una mejor experiencia con el depurador en comparación con Swift.
  • Excelente interoperabilidad con C/C++ y ObjC++ para bases de código mixtas.
  • Lenguaje estable con décadas de compatibilidad hacia atrás; ObjC muy antiguo todavía compila.
  • Elegancia y simplicidad percibidas del paso de mensajes y la dinamismo del runtime (por ejemplo, method swizzling).
  • Evitar los cambios rompientes anteriores de Swift y el dolor de la migración; algunos desconfían de la tendencia de Apple a cambiar APIs y herramientas.
  • Para algunos, ObjC “hace el trabajo” y no hay una razón de negocio convincente para cambiar.

Argumentos para usar Swift en su lugar

  • La mayor parte del código nuevo y de las apps nuevas ahora se escribe en Swift; muchos juniors no conocen ObjC en absoluto.
  • Las nuevas APIs de Apple son cada vez más Swift-first o solo Swift, lo que hace que seguir con ObjC sea limitante a largo plazo.
  • Los desarrolladores informan mayor productividad: menos repetición, tipos/optionals más seguros, generics, async/await y uso más fácil de APIs modernas.
  • Los proyectos mixtos a menudo añaden nuevos archivos en Swift y dejan intacto el ObjC estable.

Interoperabilidad y bases de código mixtas

  • La interoperabilidad Swift–ObjC suele describirse como buena, pero puede volverse frágil en proyectos complejos o cuando se rompe el grafo de compilación de Xcode.
  • Algunos consideran que la interoperabilidad con C en Swift está bien, otros la ven dolorosa (bridging headers, empaquetado, peculiaridades de SPM/xCFramework).
  • Interoperabilidad con C++: históricamente ObjC ha sido mejor (ObjC++), aunque la interoperabilidad reciente de Swift con C++ ha mejorado.

SwiftUI y frameworks modernos

  • SwiftUI divide opiniones: excelente para UIs simples y “pantallas de ajustes”, pero descrito como inmaduro, con fallos y difícil de usar para vistas complejas y con estado (por ejemplo, mapas).
  • Algunos desarrolladores evitan SwiftUI y se quedan con UIKit/AppKit (en ObjC o en Swift); otros lo ven como una gran mejora de productividad para casos de uso limitados.

Aprendizaje y ecosistema

  • ObjC sigue siendo valioso para leer ejemplos de código antiguos, entender los entresijos de Cocoa/AppKit e interactuar con APIs más antiguas de macOS.
  • Algunos aprendices empiezan con ObjC porque los recursos modernos de Swift para Cocoa/AppKit clásico son escasos.