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 № 1Wynika 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