Отвечая на этот вопрос, выяснилось, что для вызова init
необходимы метки аргументов. Это нормально в Swift.
class Foo {
init(one: Int, two: String) { }
}
let foo = Foo(42, "Hello world") // Missing argument labels 'one:two:' in call
Однако в игре играют незнакомые силы:
extension Foo {
func run(one: String, two: [Int]) { }
}
foo.run(one: "Goodbye", two: []) // Extraneous argument label 'one:' in call
Чтобы использовать метку аргумента здесь, ее нужно будет явно объявить.
Я не видел ничего подробного объяснения всего этого в документации. Для каких разновидностей класса/экземпляра/глобальных функций нужны метки аргументов? Всегда ли методы Obj-C экспортируются и импортируются с метками аргументов?