Swift 3.0 (What is the 'open' keyword in Swift?) 'da open
anahtar kelimesinin tanıtımıyla.Swift 'açık' anahtar sözcüğü ve geçersiz kılma yöntemi/uzantısı uzantısı?
Not: NSObject
türetilmiş sınıflarda veya @objc
öznitelikli yöntem/özelliklerdeki uzantılarla sınırlıdır.
Kod wich public
modülünü tanımlama dışında artık araçlar 'geçersiz kılınabilir' olduğu gibi çerçeveler, kırdı/beyan ve modüllerin boyunca uzantı içinde public
(class
) yöntemleri/özellikleri kullandı.
Örnek:
public extension UIManagedDocument {
public class func primaryDocumentName() -> String {
return "Document"
}
public class func primaryStoreURL() -> URL {
let documentsURL = FileManager.default.userDocumentsURL
return URL(fileURLWithPath: self.primaryDocumentName(), isDirectory: false, relativeTo: documentsURL)
}
public class func primaryModelName() -> String? {
return "Model"
}
}
- Orijinal teklif (SE-0117) subclassing odaklanmıştır ve uzantıları söz etmez.
- Şu uzantıları
open
anahtar kelime (senopen extension NSObject
yazma yanıopen func Method()
olarak edemez)
Soru desteklemez: mümkün kılma uzantısı sağlanan yöntemler/özellikler olacaksa Geçici çözüm mı genelinde modüller/çerçeveler ?
bu gerçekten kamu erişim modları vs yeni açık ile ilişkili mi? Hatalı olmadıkça, uzantılarda bildirilen yöntemleri yine de, Swift 2'de veya Swift 3'te geçersiz kılabilirsiniz. –
* Saf * hızlı sınıflar için haklısınız, ancak NSObject türetilmiş sınıfların yanı sıra '@ objc 'öznitelikli yöntemleri/özellikleri de olabilir. ([Swift'deki uzantılar arasında geçersiz kılınabilir misiniz, değil mi?] (Http://stackoverflow.com/questions/27109006/can-you-override-between-extensions-in-swift-or-not-compiler-seems-confused# 27109202)) – Nocross
Anlıyorum, teşekkürler. (Belki de bu bilgiyi soruya ekleyebilirsiniz). –