visual studio microsoft español descargar community objective-c swift swift-extensions

objective-c - microsoft - visual studio installer



¿Puede el código del objetivo-c llamar a la extensión rápida en Clase? (5)

Busqué algunas publicaciones, creo que no puedo escribir una extensión bajo swift, y llamarlo desde el código Objective-C, ¿verdad?

@objc como los atributos solo admiten métodos, clases, protocolos?


Como se cubre en las otras respuestas, la importación del encabezado Swift generado funciona en la mayoría de los casos .

Una excepción a esto es cuando la categoría se define en un tipo puenteado (es decir, la extensión se define en String y no en NSString ). Estas categorías no se vincularán automáticamente a sus contrapartes de Objective-C. Para evitar esto, deberá usar el tipo Objective-C (y emitir el valor de retorno en su código Swift con as String ) o definir una extensión para los tipos Swift y Objective-C.


Descubrí que en Swift 4.0 tenía que agregar @objc delante de mi palabra clave de extensión para que los métodos de extensión Swift fueran visibles por una instancia de la clase Objc que estaba extendiendo.

En breve:

Configuración de configuración de archivo:

CustomClass.h CustomClass.m CustomClassExtension.swift

En CustomClassExtension:

@objc extension CustomClass { func method1() { ... } }

En mi AppDelegate.m:

self.customClass = [[CustomClass alloc] init]; [self.customClass method1];


Esta solución funciona para Swift 2.2 y Swift 3 . Tenga en cuenta que solo las extensiones para clases (no para estructuras o enumeraciones) serán accesibles desde Objective-C.

import UIKit extension UIColor { //Custom colours class func otherEventColor() -> UIColor { return UIColor(red:0.525, green:0.49, blue:0.929, alpha:1) } }

Luego # importe "ProductModuleName-Swift.h" en su archivo ObjC.

Swift 4

extension UIColor { // As of Swift 4.0.3, the @objc annotation is needed if you want to use the extension in Objective-C files @objc class func otherEventColor() -> UIColor { return UIColor(red:0.525, green:0.49, blue:0.929, alpha:1) } }


Importe el encabezado "#import" ProductModuleName-Swift.h " en el archivo object -c y agregue @objc delante de su extensión en el archivo swift. Funcionará bien en swift 4.2 y swift 5


Puede escribir una extensión Swift y usarla en el código ObjectiveC. Probado con XCode 6.1.1.

Todo lo que necesitas hacer es:

  • cree su extensión en Swift (sin anotación @objc)

  • importe "ProjectTarget-Swift.h" en su clase ObjectiveC (donde "ProjectTarget" representa el objetivo XCode al que está asociada la extensión Swift)

  • llamar a los métodos desde la extensión Swift