Comment ajouter des initialiseurs dans des extensions de classes UIKit existantes telles que UIColor?
La Swift documentation dit que l'ajout d'initialiseurs dans une extension est possible, et l'exemple dans le document sur l'ajout d'un initialiseur d'un struct. Xcode ne reconnaît pas UIColor
's désigné initialiseur dans ma convenance de l'initialiseur:
extension UIColor {
convenience init(rawValue red: CGFloat, green g: CGFloat, blue b: CGFloat, alpha a: CGFloat) {
//Can not find out the designated initializer here
self.init()
}
}
Toutes les solutions?
source d'informationauteur mrahmiao
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire comme cela, vous pouvez choisir différents noms de paramètres pour créer votre propre initialiseurs comme suit:
Bien, si vous avez vraiment, vraiment, vraiment envie de remplacer une initialiser, il y a un moyen.
Avant de lire plus loin: ne jamais faire cela à changement
UIKit
comportement. Pourquoi? Il pourrait confondre le diable hors de quelqu'un qui ne peut pas comprendre pourquoi unUIColor
initialiser n'est pas de faire ce qu'il fait normalement. Seulement le faire réparer unUIKit
bug, ou d'ajouter des fonctionnalités, etc.J'ai utilisé les méthodes suivantes pour patch plusieurs bugs iOS.
Code
Explication
C'est à l'aide de la nature dynamique de l'Objective-C, appelé à partir de Swift, d'échanger définition de la méthode de pointeurs lors de l'exécution. Si vous ne savez pas ce que cela signifie, ou les conséquences de cela, il est probablement une bonne idée de lire sur le sujet avant d'utiliser ce code.
De changer les types de paramètres.
Utilisation:
J'avais l'habitude d'oublier le travail inutile de diviser les valeurs des composants par 255. J'ai donc fait cette méthode pour faciliter le moi.