Ответ 1
Вы получаете первую ошибку, потому что большая часть Cocoa Touch была проверена для поддержки Objective-C generics, что означает, что теперь можно вводить элементы таких вещей, как массивы и наборы. В результате этого подпись этого метода изменилась, и поскольку то, что вы написали, больше не соответствует этому, вам предоставляется ошибка, объясняющая, что вы пометили метод как override
, но на самом деле это не соответствует любые методы из суперкласса.
Затем, когда вы удаляете ключевое слово override
, ошибка, которую вы получаете, дает вам знать, что вы создали метод с конфликтующим селектором Objective-C с использованием метода начальных касаний (в отличие от Swift, Objective-C не поддерживает перегрузку метода).
Суть в том, что в Swift 2 ваши прикосновения начали отменяться, должно выглядеть так.
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
// stuff
}
Для получения дополнительной информации о том, что означает Использование Swift с параметрами Cocoa и Objective-C. На данный момент на страницах 33 и 34.