2014-12-19 31 views
1

這裏的a link到Swift教程。Swift類添加「@objc」爲什麼

我讀的協議部分,我知道,如果協議標有@objc:

@objc protocol CounterDataSource { 
    optional func incrementForCount(count: Int) -> Int 
    optional var fixedIncrement: Int { get } 
} 

這意味着該協議以指定可選的要求,可通過類

,但只有通過教程沒有說爲什麼類需要用@objc標記?

@objc class Counter { 
    var count = 0 
    var dataSource: CounterDataSource? 
    func increment() { 
     if let amount = dataSource?.incrementForCount?(count) { 
     count += amount 
     } else if let amount = dataSource?.fixedIncrement? { 
     count += amount 
     } 
    } 
} 

如果我從類中刪除@objc,編譯器沒有顯示錯誤消息太

等什麼@objc添加到類與否之間有什麼不同?

回答

4

棄用

它不再可能在最新的版本雨燕使用@objc瓦特/ O NSObject所以這個答案已被棄用。

原始

@objc前綴上課,讓他們在ObjC使用。如果你純粹在Swift中處理,這是沒有必要的。另外,如果你的類繼承自一個ObjC類,那麼這個前綴是不必要的。

+0

但是,只有從NSObject繼承的類可以聲明爲「@ objc」。那麼什麼時候'@ objc'會在課堂上有用呢? – 2017-08-10 19:45:38

+0

@AndrewPaulSimmons - 你會是正確的,它沒有用。在過去,可以使用'@objc' w/o'NSObject',但是這個功能在隨後的Swift版本中被刪除了。我會相應地更新答案。 – Logan 2017-08-14 10:49:16