Puede escribir una aplicación para iOS o Mac hoy que no contenga nada más que código Swift, pero aún se utilizará en marcos como Foundation y UIKit / AppKit que se escriben principalmente en Objective-C y otras variantes de C. Sin embargo, probablemente necesite saber Objective-C de todos modos; La mayoría de los códigos de muestra, tutoriales y otro material educativo para las plataformas de Apple está actualmente escrito en Objective-C, y a menos que ya esté bien versado en los marcos, necesitará poder leerlo.
También hay ciertos marcos y tecnologías que funcionan mal en Swift. Por ejemplo:
- No puede obtener un puntero compatible con C para una función Swift, por lo que las llamadas que usan devoluciones de llamada de puntero de función son difíciles de usar desde Swift. Por lo general, debe escribir al menos un poco de C para llamar a un bloque Swift. (En general, no es difícil escribir una función de contenedor que tome un bloque en su lugar).
- Ciertas API que requieren que llame a un selector arbitrario en un objeto, como NSDocument.saveToURL (_: ofType: forSaveOperation: delegate: didSaveSelector: contextInfo :), son difíciles de implementar porque las llamadas utilizadas para hacer eso, como NSInvocation y -performSelector :, están prohibidos como inseguros en Swift.
- Scripting Bridge en la Mac, que se utiliza para controlar otras aplicaciones (como iTunes) a través de Apple Events, depende en gran medida del despacho dinámico de Objective-C y la escritura suelta. Eso hace que sea tan difícil usar Swift que generalmente es mejor envolver completamente los objetos de Scripting Bridge en sus propios objetos Objective-C, y luego usar esos objetos envolventes en su código Swift.
- Core Data funciona, en parte gracias a las características especiales específicamente agregadas a Swift para admitirlo, pero NSManagedObject en particular es muy peculiar y tiene menos funciones que Objective-C.
No tengo dudas de que las futuras versiones de las plataformas de Apple y Swift abordarán muchos de estos problemas; por ejemplo, no hay una buena razón para usar devoluciones de llamada de puntero de función o pares de selector de destino ahora que tenemos bloques, por lo que estas API están listas para su reemplazo. Pero por ahora, algunas API que usan patrones de diseño relativamente arcaicos no serán fáciles de usar con Swift, y es posible que necesite un poco de pegamento C o Objective-C para que funcionen.
- Cómo validar dinámicamente los valores de campo en una aplicación de iOS
- Actualmente soy desarrollador de iOS. No sé cómo debo crecer más en esta área.
- ¿Cuándo, si alguna vez, no deberías incluir la barra de estado en una aplicación de iPhone?
- ¿Cuál es el mejor servicio de análisis para aplicaciones de iPad?
- ¿Por qué WhatsApp es más popular en iPhone que en teléfonos Android?
Eso no quiere decir que todas las aplicaciones tengan que incluir algún código de Objective-C, y ciertamente no quiere decir que debas evitar Swift. Pero probablemente todavía no pueda salirse con la suya sin conocer Objective-C, y debe estar preparado para contaminar su aplicación Swift pura y agradable con un par de docenas de líneas de calzas Objective-C para llenar los vacíos en Swift de los marcos. apoyo.