Swift'de, modüllerinin ad alanı olarak çalışması nedeniyle artık prefix classes'a gerek yoktur.Önek uzantısı işlevleri
Uzantı önekleme işlevleri hakkında ne düşünüyorsunuz? Örneğin:
extension UIImage {
public func hnk_hasAlpha() -> Bool { ... }
}
Bir yandan Swift dinamik değildir, bu nedenle çarpışmalar derleyici hataları oluşturur.
Ancak derlenmiş kod, uzantı yöntemlerimden birinin eklendiği gelecekteki bir iOS/OS X sürümünde çalışıyorsa ne olur? Aynı imzaya sahip olsalar bile farklı modüllerdeki yöntemler farklı semboller olarak kabul edilir mi?
Genişletilmiş sınıf bir NSObject alt sınıfı mı yoksa saf Swift sınıfı mıdır? Objective-C tiplerinin
uzantıları getireceği bütün, Objective-C kategorileri olarak uygulanmaktadır: Burada bazı incelik var
Neden Apple tarafından sağlanan bir sınıfa işlevsellik eklemenin iyi bir fikir olduğunu düşünüyorsunuz? Neden sadece bir işlev yazmıyoruz. Bu kod ile çalışan geleceğin geliştiricileri için açık olacaktır. Veya alt sınıf. – zaph
İyi bir fikir olsun ya da olmasın, sorunun teknik yönünden alakasızsa, Swift bu tür çarpışmaları nasıl ele alır. Apple sınıflarını genişletmenin, sembolün kapsamını sınırlarken, daha iyi bir bağlam sağlamak ve diğer şeylerin yanı sıra sarmalayıcı nesnelere başvurmadan özel protokoller uygulamak için faydalı olduğunu düşünüyorum. – hpique