2014-06-06 10 views
6

Proprio come classe UILabel:Come dichiarare un'interfaccia pubblica, come ad esempio Apple. Un altro modo, nascondere l'implementazione

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 
.... 
} 

Ma se io definisco una classe come questa, che non ha la funzione init anche. Il compilatore mi avviserà. Come potrei fare la stessa cosa di Apple, per nascondere l'implementazione, dichiarare solo l'interfaccia. Grazie.

+0

"come avrei potuto nascondere la mia realizzazione" che è un buon domanda. "Come faccio a spedire una libreria Swift senza codice sorgente?" Da dove vengono le "intestazioni" da compilare? Nessuna idea. – Thilo

+0

Posso ottenere la soluzione, basta farlo come l'interfaccia o il protocollo di java. Grazie. – Huangzy

+0

possibile duplicato di [Swift: come posso creare un'interfaccia esterna per la libreria statica (intestazioni pubbliche analogiche in Objective-C .h)] (http://stackoverflow.com/questions/24070722/swift-how-can-i-create -External-interfaccia-for-static-biblioteca-pubblici-headers-an) – Thilo

risposta

2

UILabel non è implementato in Swift.

Quello che vedi qui è derivato dal file di intestazione Objective-C per UILabel.

0

Prova a cambiare il nome della classe e prova.

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

Si consiglia di osservare più da vicino i protocolli. È possibile dichiarare il vostro protocollo come questo:

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

e riferimento in un secondo momento nella tua classe:

class MyClass : UIViewProtocol { 
    .... 
} 

Riferimento da Apple: iOS 8 Protocols