2015-07-10 9 views
29

In Objective-C kann ich dies tunVerfall und andere Attribute von Methoden in Swift, wie?

- (id)init __attribute__((unavailable("init is unavailable, use initWithFrame"))); 

Benutzer zu warnen, dass diese Methode nicht zur Initialisierung einer Klasse verwendet werden soll, und ich kann dieses andere __attribute Fügen Sie eine Methode

+(void)shareWithParams:(NSDictionary *)params 
__attribute((deprecated("use shareWithPars: instead"))); 

Ist deprecate ist es möglich, so etwas in Swift zu machen?

Antwort

54

Swift verfügt über ein available Attribut, das Sie dafür verwenden können. Es ist verfügbar Argumente

  • eingeführt
  • veralteten
  • veralteten
  • Nachricht
  • umbenannt umfassen.

Oder für das Beispiel, das Sie haben: auf diese Attribute

@available(*, unavailable, message: "init is unavailable, use initWithFrame") 
init() { 

} 

@available(*, deprecated, message: "use shareWithPars: instead") 
class func shareWithParams(params: NSDictionary) { 

} 

Weitere Informationen finden Sie im Abschnitt Attribute in The Swift Programming Language aus. (derzeit Seite 627)

+0

Link zur HTML-Version des Swift Programming Language: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html – Klaas

+1

Leider '@ available' fügt dem generierten Obj-C-Header für Swift-Code, der von Obj-C verwendet wird, nichts hinzu. Gibt es eine Möglichkeit Swift-Methoden mit '__attribute __ ((unavailable())' zu obj-c zu bekommen? '@ nonobjc' funktioniert nicht immer, das Ziel besteht darin, vererbte Methoden nicht zu kennzeichnen. –

7

Für Swift 3 und Swift 4, anstatt das Zeichen = zu verwenden, um die Nachricht zu setzen, müssen Sie das : Zeichen verwenden. Zum Beispiel:

@available(*, deprecated, message: "Use EndPointModel class instead") 
class BaseModel { 

} 
Verwandte Themen