¿Qué cosas se pueden hacer en Objective-C pero no en Swift?

  • Captura de excepciones de Objective-C. Por ejemplo, puede llamar a las API de Objective-C desde Swift, pero si arrojan excepciones, no puede atraparlas en Swift.
  • Use C ++ y llame a las API de C ++. Puede usar código C ++ en Objective-C (funcionan independientemente uno del otro, no entran en conflicto), si se compila como Objective-C ++. Esto le permite usar bibliotecas con API de C ++. No puede incluir C ++ en Swift; y aunque puede importar las API de Objective-C y C en Swift, no puede importar las API de C ++ en Swift.
  • Hacer llamadas donde el método a llamar se elige dinámicamente en tiempo de ejecución. En Cocoa para Objective-C, puede usar el performSelector: familia de métodos para realizar una llamada a un método en el que el método no se repara en el momento de la compilación. Y de manera más general, puede usar la clase NSInvocation para construir una llamada al método donde el método no se conoce en tiempo de compilación, e incluso el número y los tipos de argumentos no tienen que conocerse en tiempo de compilación, y funciona con todos los tipos de argumentos. Estos llaman a la familia objc_msgSend bajo nivel de funciones de tiempo de ejecución. En Cocoa para Swift y la API de tiempo de ejecución de Objective-C para Swift, Apple no ha realizado performSelector: NSInvocation u objc_msgSend . (Actualización: performSelector: ha estado disponible desde Swift 2, pero no desde los demás).
  • Manejo de llamadas a métodos no implementados dinámicamente en tiempo de ejecución. En Objective-C, no es necesariamente un error llamar a un método en un objeto que no implementó el método. El objeto tiene la posibilidad de manejar el mensaje, inspeccionar el nombre del método, argumentos, etc., y potencialmente invocar el mensaje en otro objeto o de otra manera. Esto se realiza mediante el método forwardInvocation: que recibe el mensaje representado como NSInvocation . Como en el punto anterior, NSInvocation no está disponible para Swift, por lo que forwardInvocation: no se puede usar.

Macros complejas.

De acuerdo con Apple:

Las macros complejas se usan en C y Objective-C pero no tienen contrapartida en Swift. Las macros complejas son macros que no definen constantes, incluidas las macros parecidas a funciones entre paréntesis. Utiliza macros complejas en C y Objective-C para evitar restricciones de verificación de tipo o para evitar volver a escribir grandes cantidades de código repetitivo. Sin embargo, las macros pueden dificultar la depuración y la refactorización. En Swift, puede usar funciones y genéricos para lograr los mismos resultados sin ningún compromiso. Por lo tanto, las macros complejas que se encuentran en los archivos fuente C y Objective-C no están disponibles para su código Swift.

Agregar un elemento más a la excelente lista compilada arriba:

Compatibilidad binaria (para bibliotecas / marcos): Swift todavía carece de esto. Entonces, si desea ofrecer componentes a otros desarrolladores, entonces Objective-C es el camino a seguir (o proporcionar la fuente Swift).

Ver:
Blog de Swift: consulte la sección Compatibilidad binaria y marcos

More Interesting

¿Existe un diccionario universal incorporado equivalente para Windows y Android como el de iOS y OS X?

Cómo activar la identificación de llamadas entrantes en vivo en iPhone 5S con iOS 8

¿Por qué el impactador Cydia no funciona para iOS 11 beta?

¿Apple está pagando a Twitter, o viceversa, por la integración de iOS en Twitter?

¿Es posible instalar Cydia en un iPhone? ¿Puedo encontrar algunas alternativas para un iOS 9?

¿Cuáles son los mejores recursos para aprender el desarrollo de iOS? Estoy buscando aprender Swift, Objective-C y Cocoa.

¿Qué es el corte de aplicaciones en iOS 9?

¿Los juegos de iOS matarán a Xbox y Playstation?

¿Cuáles fueron las ventajas del conector de 30 pines de Apple sobre USB? ¿Cuándo / dónde se moverán más allá?

¿BMW ha detenido el trabajo de desarrollo en la aplicación 'BMW Connected'?

¿Qué cursos o idiomas se deben aprender si alguien desea desarrollar sitios web, incluso los complejos como un sitio web de comercio electrónico, y también desea desarrollar aplicaciones para iOS y Android?

Cómo restaurar un dispositivo iOS usando iCloud

¿La actualización de iOS 10.1.1 (desde ios 9) borra algún dato (contactos, fotos o algo)? En caso afirmativo, ¿qué datos se borran?

¿Cuál es el desglose de las referencias de instalación de aplicaciones iOS?

¿Cuánto cuesta hacer una aplicación iOS o Android? ¿Cuál es el modelo de pago entre yo (cliente) y la empresa de creación de aplicaciones que diseñará, realizará, mantendrá y comercializará la aplicación para mí?