Вот a link Учебник Swift.Swift class add "@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 к классу или нет?
Но только классы, наследующие NSObject, могут быть объявлены '@ objc'. Итак, когда '@ objc' когда-нибудь будет полезен перед классом? –
@AndrewPaulSimmons - вы были бы правы, что это не полезно. Раньше можно было использовать '@ objc' w/o' NSObject', но эта возможность была удалена в последующих версиях Swift. Я соответствующим образом обновлю ответ. – Logan