2015-07-10 23 views
29

Bir sınıfın başlatılmasını bu yöntemi kullanmamalıdır kullanıcılarını uyarmak amacıyla buDeprecation ve Swift yöntemleri diğer özellikleri, nasıl? Objective-C ise

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

yapabilir ve

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

mı bir yöntemini kaldırmayı bu diğer __attribute ekleyebilir Swift'de böyle bir şey yapmak mümkün mü?

cevap

54

Swift, bunun için kullanabileceğiniz bir available özniteliğine sahiptir. Bu mevcut argümanlar

  • mesajı değiştirildi
  • obsoleted kaldırılmış tanıtıldı

    • dahil bulunuyor.

    Yoksa verdi örneğin

  • : bu özelliklerin daha fazla bilgi için

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

    , The Swift Programming Language yılında Nitelikler bölümüne bakın. (şu an için sayfa 627)

    +0

    Swift Programlama Dili HTML sürümüne Bağlantı: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html – Klaas

    +1

    Maalesef '@ mevcut 'Obj-C tarafından kullanılan Swift kodu için oluşturulan Obj-C başlığına hiçbir şey eklemez. '__attribute __ ((kullanılamaz())) 'i sw-c olarak işaretlenen Swift yöntemlerini elde etmenin herhangi bir yolu var mı? '@ nonobjc' her zaman çalışmaz, amaç devralınan yöntemleri kullanılamaz olarak işaretlemektir. –

    7

    Swift 3 ve Swift 4 için, mesajı ayarlamak için = işaretini kullanmak yerine, : işaretini kullanmanız gerekir. Örneğin:

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