tratamiento trastorno receptivo qué mixto lenguaje expresivo especifico ejemplos definicion ios objective-c swift frameworks

ios - qué - trastorno mixto del lenguaje receptivo-expresivo pdf



Marco de lenguaje mixto (3)

Creo que necesitas hacer bridging-header para acceder a tu código obj-c en poco tiempo. Más en el enlace https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

entonces es un archivo con sus importaciones desde la transferencia obj-c a swift. los nombres son muy importantes, así que importa eso. Espero eso ayude

ps también necesita agregar esta ruta de encabezado a la configuración de su proyecto

Tengo un marco (llamémoslo MyKit) escrito en Objective-C que extiendo con algunas clases de Swift. Estoy tratando de entender cómo funciona con esta documentación: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216- CH10-XID_77

Por lo que yo entiendo, no se supone que tenga una clase de encabezado de puente, y en su lugar ponga todas mis inclusiones en el archivo de cabecera del paraguas (que entiendo que es).

Entonces escribo en MyKit.h:

#import <MyKit/ModelObjectA.h> #import <MyKit/ModelObjectB.h> #import <MyKit/ControllerObjectC.h>

No incluyo ControllerObjectD.swift, ¿a pesar de que también entra aquí? O debería incluir

#import <MyKit/ControllerObjectD-Swift.h>

?

ControllerObjectD utiliza ModelObjectA y ModelObjectB. Ahora que no tengo un archivo de cabecera de puente, obtengo errores de compilación porque no puede encontrar estos objetos.

La documentación dice "Swift verá todos los encabezados que exponga públicamente en el encabezado de su paraguas". y esto es cierto cuando importo el marco en otros proyectos, pero el proyecto marco no puede compilar porque no lo ve. He activado la configuración de compilación "Definir módulos".

¿Hay algo que he malinterpretado sobre el encabezado del paraguas, tal vez? ¿Dónde puedo decir "Hola proyecto, este es el archivo de encabezado del paraguas"? El marco compila si configuro el encabezado del paraguas como un encabezado de puente, pero parece que volví al principio de esta manera.

Aclamaciones

Nik


Creo que su problema puede deberse a los modificadores de acceso en su clase Swift; sin embargo, he escrito una breve guía y un proyecto de muestra para ayudarlo a:

El proyecto de ejemplo se puede encontrar aquí

Hay dos partes para tener un marco de lenguaje mixto:

  1. Importación de Objective-C a Swift
  2. Importación de Swift en Objective-C

1. Importación de Objective-C a Swift

Esto es, por ejemplo, si tiene una clase Objective-C llamada Player que quiere agregar a una clase rápida llamada Game .

De acuerdo con la documentación, debe hacer estos dos pasos para importar el objeto Player objeto Game .

  1. En Configuraciones de compilación, en Empaquetado, asegúrese de que la configuración Definir módulo para ese objetivo de infraestructura esté establecida en Sí.
  1. En el archivo de encabezado de su paraguas, importe cada encabezado de Objective-C que desee exponer a Swift.

    #import <Framework/Player.h>

Asegúrese de que su archivo de encabezado de Player en Objective-C esté marcado para la membresía de público objetivo en el marco:

Siguiendo estos pasos, es posible importar la clase Player Objective-C a la Game Swift Class:

import UIKit public class Game: NSObject { public let player: Player public init(player: Player) { self.player = player super.init(); } }

2. Importación de Swift en Objective-C

Para importar la clase Swift Game en el objeto Player , podemos seguir un procedimiento similar.

  1. Como antes; En Configuraciones de compilación, en Empaquetado, asegúrese de que la configuración Definir módulo para ese objetivo de infraestructura esté establecida en Sí.
  1. Importe el código Swift de ese objetivo de infraestructura en cualquier archivo Objective-C .m dentro de ese objetivo de infraestructura usando esta sintaxis y sustituyendo los nombres apropiados:

    #import <ProductName/ProductModuleName-Swift.h>

    En mi caso, esto funciona como:

    #import <SwiftObjC/SwiftObjC-Swift.h>

    y supongo que para ti:

    #import <MyKit/MyKit-Swift.h>

    Por lo tanto, asegúrese de que todas las propiedades, métodos y clases a los que desea acceder se definan como públicos en su archivo rápido o de lo contrario no serán visibles para Objective-C.

Subí mi proyecto de muestra que muestra cómo funciona todo esto en GitHub https://github.com/elliott-minns/SwiftObjCTestFramework

Espero que esto te ayude con tu problema.


De la documentación en Apple: una clase Swift debe ser un descendiente de una clase Objective-C para ser accesible y utilizable en Objective-C. Para obtener más información sobre a qué puede acceder desde Objective-C y cómo se importa la interfaz de Swift, consulte Compatibilidad de tipo rápido.

Entonces, su clase pública rápida necesita extender NSObject por ejemplo.