Есть некоторые ключевые отличия в подклассах от NSObject по сравнению с нативными подклассами Swift.
Свифт базового базового класса или NSObject
Я не являюсь экспертом, в чем конкретно разница, но это связано со временем выполнения Objective C и дополнительными метаданнымивы получаете с NSObject.
В вашем примере, если вы не подкласс от NSObject, вы увидите, что вывод консоли соответствует тому, что вы ожидаете.
Я столкнулся с этой проблемой сам, когдаработа с ячейками табличного представления и представления коллекции.Я стараюсь избегать создания подклассов NSObject, когда это возможно, но когда это неизбежно, я также настраиваю свойство description
из CustomStringConvertible , чтобы получить то, что мне нужно.
Вы можете также использовать такие приемы, как Отражение , чтобы извлечь из этого максимум пользы.
protocol TestProtocol {
init()
}
class Person: TestProtocol {
required init() {
}
}
class Man: Person {
required init() {
super.init()
}
}
class Women: Person {
}
Когда вы запускаете их в Xcode или на игровой площадке, вы получаете следующее:
__lldb_expr_16.Person
__lldb_expr_16.Man
__lldb_expr_16.Women