У меня возникло множество проблем с Swift при подклассификации чего-либо в Cocoa, поэтому я решил создать MVCE и разместить его здесь. Попробуйте сами.Swift дает всевозможные ошибки
Я создал простое приложение какао в Xcode со следующими параметрами:
Язык: Swift
Используйте о Storyboard: Нет
Затем я создал подкласс NSView с именем Rectangle:
import Foundation
import Cocoa
class Rectangle: NSView { //1
init(frame: NSRect) { //2
super.init(frame: frame) //3
} //4
} //5
Странно, что некоторые ошибки приходят и уходят во время ввода. Когда я компилирую проекта, я получаю следующие ошибки:
// 2: Перекрытие декларация требует ставиться ключевое слово '
// 5: «требуется» Initializer' инициализации (кодировщиков :) должен быть обеспечен по подклассу 'NSView'
Как только я начинаю печатать, я получаю следующие дополнительные ошибки:
// 1: Использование необъявленной типа 'NSView'
// 3: ' супер "не могут быть r eferenced в корневом классе
Если я снова скомпилирую, две предыдущие ошибки исчезнут.
Любая идея, что я делаю неправильно? Как я уже сказал, попробуйте сами. Может быть, это ошибка.
Требуется ли 'initWithCoder'? Ошибки, возникающие при вводе текста, остаются там после того, как я закончил набирать текст (например, меняя «NSView» на «NSViewController»). –
Если вы посмотрите на определение метода для initWithCoder в базовом классе, вы увидите требуемое ключевое слово. Так что да, это необходимо. Ошибки будут сохраняться до тех пор, пока компилятор не завершит другой проход, попробуйте нажать команду -b. Конечно, вы можете создавать больше ошибок, это тоже возможно. –