2014-06-06 6 views
6

Podobnie jak w klasie UILabel:Jak zadeklarować publiczny interfejs, taki jak Apple. Innym sposobem, ukryć realizację

class UILabel : UIView, NSCoding { 

    var text: String! // default is nil 
    var font: UIFont! // default is nil (system font 17 plain) 
    var textColor: UIColor! // default is nil (text draws black) 
    var shadowColor: UIColor! // default is nil (no shadow) 
    var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow 
.... 
} 

Ale jeśli zdefiniowanie klasy jak ten, który nie ma init również. Kompilator ostrzeże mnie. Jak mogę zrobić to samo co Apple, aby ukryć implementację, zadeklaruj tylko interfejs. Dzięki.

+0

„Jak mogę ukryć moją wdrażania”, to jest to dobry pytanie. "Jak wysłać bibliotekę Swift bez kodu źródłowego?" Skąd pochodzą "nagłówki" do kompilacji? Brak pomysłu. – Thilo

+0

Mogę dostać rozwiązanie, po prostu zrób to jak interfejs lub protokół Java. Dzięki. – Huangzy

+0

możliwy duplikat [Swift: w jaki sposób mogę utworzyć zewnętrzny interfejs dla biblioteki statycznej (publiczne nagłówki analogowe w Objective-C .h)] (http://stackoverflow.com/questions/24070722/swift-how-can-i-create -external-interface-for-static-library-public-headers-an) – Thilo

Odpowiedz

2

UILabel nie jest zaimplementowany w Swift.

To, co tu widzisz, pochodzi z pliku nagłówkowego Objective-C dla UILabel.

0

Spróbuj zmienić nazwę klasy i spróbuj.

class MyClass : UIView, NSCoding { 

     var text: String! // default is nil 
     var font: UIFont! // default is nil (system font 17 plain) 
     var textColor: UIColor! // default is nil (text draws black) 
     var shadowColor: UIColor! // default is nil (no shadow) 
     var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow 
     } 
1

Powinieneś przyjrzeć się bliżej protokołom. Można zadeklarować swój protokół tak:

protocol UIViewProtocol { 
    var text: String { get } 
    ... 
} 

i odniesienie go później w swojej klasie:

class MyClass : UIViewProtocol { 
    .... 
} 

Referencyjnym przez Apple: iOS 8 Protocols

Powiązane problemy