/ / Rozszerzenie Swift w Cocoapods Framework powodujące nierozpoznany selektor wysłany do klasy - cel-c, szybki, cocoapods, ios-frameworks, swift-extensions

Rozszerzenie Swift w Cocoapods Framework powodujące nierozpoznany selektor wysłany do Class-objective-c, swift, cocoapods, ios-frameworks, swift-extensions

Mam szkielet Swift, który jest zarządzany przez Cocoapods i zawiera rozszerzenie takie jak:

public extension UIImage {
public static func maskedImageWithColor( color: UIColor, forImageNamed image: UIImage) {
// Implementation
}
}

Kiedy piszę to w Objective C w mojej głównej aplikacji, nie otrzymuję błędów ani ostrzeżeń kompilatora.

// No problems here!
[UIImage maskedImageWithColor:UIColor.blackColor() forImageNamed:@"myImage"];

Jednak po uruchomieniu aplikacji wybucha bałagan w błędach "Nierozpoznany selektor".

Dziwne jest to, gdy struktura jest zamknięta w ciągu projektu i dodane bezpośrednio do odpowiednich części faz budowy (tzn. nie są zarządzane przez Cocoapods), wszystko działa zgodnie z oczekiwaniami.

Inne aspekty klas szkieletowych, wyliczenia itd. - wszystko też działa dobrze, wydaje się tylko rozszerzeniami i tylko wtedy, gdy są one w strukturze zarządzanej przez Cocoapods.

Jakieś pomysły na temat tego, czego może mi brakować?

Odpowiedzi:

0 dla odpowiedzi № 1

Wynika to z tego, że linker nie ładuje domyślnie metod kategorii z biblioteki statycznej. Jeśli dodajesz metody kategorii (rozszerzenie w swift) do biblioteki statycznej, dodaj -ObjC do innych flag linkerów w ustawieniach budowania celów.

Czytaj więcej tutaj