2015-07-10 25 views
29

在Objective-C,我可以做到這一點Swift中方法的棄用和其他屬性如何?

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

警告說,不應該使用這種方法一類的初始化用戶,我可以將它添加其他__attribute棄用的方法

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

是有可能在Swift中做類似的事情?

回答

54

Swift有一個available屬性,您可以使用它。它的可用參數包括引入

  • 棄用
  • 廢棄
  • 消息
  • 改名

    或者你給的例子:

    @available(*, unavailable, message: "init is unavailable, use initWithFrame") 
    init() { 
    
    } 
    
    @available(*, deprecated, message: "use shareWithPars: instead") 
    class func shareWithParams(params: NSDictionary) { 
    
    } 
    

    有關這些屬性的更多信息,請查看屬性部分中The Swift Programming Language。 (當前爲第627頁)

  • +0

    鏈接到斯威夫特編程語言的HTML版本:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html – Klaas

    +1

    不幸的是,'@可用「不會爲Obj-C使用的Swift代碼生成的Obj-C頭添加任何內容。有沒有辦法讓Swift方法標記爲__attribute __((unavailable()))到obj-c? '@ nonobjc'並不總是有效,目標是標記繼承的方法不可用。 –

    7

    對於Swift 3和Swift 4,而不是使用=符號來設置消息,您必須使用:符號。例如:

    @available(*, deprecated, message: "Use EndPointModel class instead") 
    class BaseModel { 
    
    } 
    
    相關問題