Ho un framework Swift che è gestito tramite Cocoapods e contiene un'estensione come questa:
public extension UIImage {
public static func maskedImageWithColor( color: UIColor, forImageNamed image: UIImage) {
// Implementation
}
}
Quando scrivo in Objective C nella mia applicazione principale non ricevo errori o avvertenze del compilatore.
// No problems here!
[UIImage maskedImageWithColor:UIColor.blackColor() forImageNamed:@"myImage"];
Quando eseguo l'app, tuttavia, esplode in un guaio di errori "Selettore non riconosciuto".
La cosa strana è, quando la struttura è contenuta entro il progetto e aggiunto direttamente alle parti rilevanti delle fasi di costruzione (cioè non gestito da Cocoapods), tutto funziona come previsto.
Altri aspetti delle classi-quadro, enumerazioni, ecc. Funzionano bene, sembrano estensioni e solo quando sono in un framework gestito da Cocoapods.
Qualche idea su cosa potrei mancare qui?
risposte:
0 per risposta № 1Questo perché il linker non sta caricando i metodi di categoria dalla libreria statica per impostazione predefinita. Se si aggiungono metodi di categoria (estensione in swift) con libreria statica, aggiungere -ObjC
ad altri flag linker nelle impostazioni di generazione dei target.
Leggi di più Qui