¿Podemos llamar al código Objective-C usando Swift?

¡Sí tu puedes!

Si tiene una clase existente que le gustaría usar, realice el Paso 2 y luego salte al Paso 5 . (En algunos casos, tuve que agregar un #import <Foundation/Foundation.h explícito #import <Foundation/Foundation.h a un archivo Objective-C anterior). **

Paso 1: Agregar implementación de Objective-C – .m

Agregue un archivo .m a su clase y CustomObject.m nombre CustomObject.m .

Paso 2: Agregar encabezado de puente

Al agregar su archivo .m , es probable que reciba un mensaje similar al siguiente:

Haga clic en !

Si no vio el mensaje o eliminó accidentalmente su encabezado de puente, agregue un nuevo archivo .h a su proyecto y -Bridging-Header.h nombre -Bridging-Header.h .

En algunas situaciones, particularmente cuando se trabaja con marcos Objective-C, no se agrega una clase Objective-C explícitamente y Xcode no puede encontrar el enlazador. En este caso, cree su archivo .h nombrado como se mencionó anteriormente, luego asegúrese de vincular su ruta en la configuración del proyecto de destino de esta manera:

Nota

Es una buena práctica vincular su proyecto usando la macro $(SRCROOT) para que si mueve su proyecto o trabaja con otros usando un repositorio remoto, todavía funcionará. $(SRCROOT) puede considerarse como el directorio que contiene su archivo .xcodeproj. Podría verse así:

$ (SRCROOT) / Carpeta / Carpeta / – Bridging-Header.h

Paso 3: Agregue el encabezado Objective-C – .h

Agregue otro archivo .h y CustomObject.h nombre CustomObject.h .

Paso 4: construye tu clase Objective-C

En CustomObject.h

#import

@interface CustomObject: NSObject

@property (fuerte, no atómico) id someProperty;

– (nulo) someMethod;

@fin

En CustomObject.m

#import “CustomObject.h”

@implementation CustomObject

– (nulo) someMethod {
NSLog (@ “SomeMethod Ran”);
}

@fin

Paso 5: Agregar clase al encabezado de puente

En YourProject-Bridging-Header.h :

#import “CustomObject.h”

Paso 6: usa tu objeto

En SomeSwiftFile.swift :

var instanceOfCustomObject: CustomObject = CustomObject ()
instanceOfCustomObject.someProperty = “Hola mundo”
println (instanceOfCustomObject.someProperty)
instanceOfCustomObject.someMethod ()

No hay necesidad de importar explícitamente; para eso sirve el encabezado de puente.

Usando clases rápidas en Objective-C

Paso 1: crear una nueva clase Swift

Agregue un archivo .swift a su proyecto y MySwiftObject.swift nombre MySwiftObject.swift .

En MySwiftObject.swift :

Fundación de importación

clase MySwiftObject: NSObject {

var someProperty: AnyObject = “Some Initializer Val”

en eso() {}

func someFunction (someArg: AnyObject) -> String {
var returnVal = “Me enviaste \ (someArg)”
return returnVal
}
}

Paso 2: Importar archivos Swift a la clase ObjC

En SomeRandomClass.m :

#import ” – Swift.h”

El archivo: -Swift.h ya debería crearse automáticamente en su proyecto, incluso si no puede verlo.

Paso 3: usa tu clase

MySwiftObject * myOb = [MySwiftObject new];
NSLog (@ “MyOb.someProperty:% @”, myOb.someProperty);
myOb.someProperty = @ “Hola Mundo”;
NSLog (@ “MyOb.someProperty:% @”, myOb.someProperty);
NSString * retString = [myOb someFunction: @ “Arg”];
NSLog (@ “RetString:% @”, retString);

Espero que esto ayude 🙂

CORTO:-

, se puede hacer

LARGO:-

Consulte este enlace de StackOverflow.

Cómo llamar al código Objective-C desde Swift

Los pasos son un poco largos con referencias XCode e incluso imágenes. Por lo tanto, sería más fácil ir a StackOverflow y ver la solución por ti mismo …

La explicación es fácil de entender incluso para aquellos que no han codificado mucho en Obj-C y Swift.

SOLO POR DIVERSIÓN.
Echa un vistazo ¿Sigues usando Objective-C y Swift juntos?

Sí, es posible con la ayuda de un archivo puente, es decir, un archivo .h. En este archivo puede importar todos los encabezados de Objective-C que desee exponer a Swift.

Sí, puede usar el código objetivo c en swift usando el archivo de encabezado de puente …

Hola, sí, puedes llamar porque el compilador rápido puede unir el bloque de código objetivo c con códigos rápidos, también puedes incluir el archivo objetivo c a través del archivo objeto.