Swift farklı sınıflardan uzantısı yapmak. Birden fazla sınıf için bir uzantı yapmak mümkün mü?Nasıl bir uzantı var
Teşekkürler.
Swift farklı sınıflardan uzantısı yapmak. Birden fazla sınıf için bir uzantı yapmak mümkün mü?Nasıl bir uzantı var
Teşekkürler.
Protokol yapabilir ve genişletebilirsiniz.
şey gibi:
genişletilmiş sınıflar için kullanılabilir olacak Yöntemin
protocol Animations {
func animateHidden(flag: Bool)
}
extension Animations {
func animateHidden(flag: Bool) {
// some code
}
}
extension UILabel: Animations {}
extension UIImageView: Animations {}
:
let l = UILabel()
l.animateHidden(false)
let i = UIImageView()
i.animateHidden(false)
bir yorumda, Sorduğunuz: "Bu durumda UILabel
için self
çağırmak nasıl ve animateHidden
'da UIImageView
işlevi? ". Bunu uzantıyı kısıtlayarak yaparsınız. Bir where
maddesi ile
Örnek: where
maddesi konusundaki mükemmel yorum için @ Knight0fDragon için
extension Animations where Self: UIView {
func animateHidden(flag: Bool) {
self.hidden = flag
}
}
teşekkürler.
' sınıfları için yararlı olacaktır. Bu durumda 'self '' UILabel' ve 'UIImageView' için nasıl çağrılır animateHidden işlevinde? – Danny
@Danny, bir where cümlesi ekleyin. '' Selfly: UIView' uzantısı olan animasyonlar '' ULiew' – Knight0fDragon
Ancak, “Self: UIImageView” uzantısı olan Animasyonları yapmak ve “animateHidden (flag:)” için aynı uygulamayı yeniden üretmek zorunda değil misiniz? Bu tür uygulama kodunu yeniden kullanma amacını ortadan kaldırır. – HuaTham
Yalnızca "UIView" uzantısını kullanabilir misiniz? 'AnimateHidden' – Kevin
@Kevin uygulamasına bağlı olacaktır. 'AnimateHidden' tüm kodu 'UILabel', 'UIImageView' – Danny