Я запускаю новый проект iOS Swift
. Мне нужно добавить некоторые функции, которые должны наследовать все классы проекта. В отличие от Objective C
не все классы в Swift
наследуются от какого-либо конкретного класса, например NSObject
. Например,
Я не могу создать расширение класса Any
или AnyObject
, как я могу для NSObject
. Например, приведенный ниже код в порядке.
extension NSObject {
@objc var classTag: String {
return String(describing: type(of: self))
}
}
Но расширение на AnyObject
дает ошибку компилятора,
Неноминальный тип 'AnyObject' не может быть расширен
Итак, я решил сделать все быстрые классы в моем проекте наследуемыми от моего BaseClass
, который на самом деле наследуется от NSObject
.
class BaseClass: NSObject {
@objc var classTag: String {
return String(describing: type(of: self))
}
}
И других классов, т. Е.
class OtherClass: BaseClass {
// have classTag
}
Прежде чем я создам политику для своей команды, чтобы наследовать все классы от BaseClass
, я хочу знать, есть ли некоторые недостатки наследования всех классов от NSObject
по умолчанию.