Как инициализировать подкласс NSTableRowView?
Компилятор падает в строке 3, и я не могу найти информацию об инициализаторах NSTableRowView в любом месте
class ItemRowView: NSTableRowView {
convenience override init(frame: NSRect) {
self.init(frame: frame) // EXC BAD ACCESS
self.draggingDestinationFeedbackStyle = NSTableViewDraggingDestinationFeedbackStyle.None
}
1 ответ
Решение
Первый, init( frame: NSRect )
назначенный инициализатор, поэтому ключевое слово convenience
неправильно в этом месте. Тогда вы, вероятно, хотели позвонить super
инициализатор, чем ваш собственный метод рекурсивно. Наконец вам нужно реализовать еще один необходимый инициализатор init?(coder: NSCoder)
Следующий код должен помочь вам:
class ItemRowView: NSTableRowView {
override init(frame: NSRect) {
super.init(frame: frame) // super - not self
self.draggingDestinationFeedbackStyle = NSTableViewDraggingDestinationFeedbackStyle.None
}
required init?(coder: NSCoder) {
// Write something useful here, or leave the default implementation
fatalError("init(coder:) has not been implemented")
}
}