Почему Xcode не всегда отображает подсказку о значении параметра по умолчанию?
Есть ли какое-либо правило, когда Xcode отображает подсказку функции / метода со значением параметра по умолчанию?
Вот что я имею в виду. Например, в UIViewController
есть present()
метод с такой подписью:
func present(
_ viewControllerToPresent: UIViewController,
animated flag: Bool,
completion: (() -> Void)? = nil
)
Когда я набираю его имя в Xcode, мне только намекают на полное объявление метода, включая completion
параметр, который можно опустить:
присутствует (viewControllerToPresent: UIViewController, анимированный: Bool, завершение: (() -> Void)?)
Тем не менее, давайте создадим present
копия метода:
func presentCopy(
_ viewControllerToPresent: UIViewController,
animated flag: Bool,
completion: (() -> Void)? = nil
) {...}
На этот раз Xcode сообщает о двух возможных версиях метода:
presentCopy (viewControllerToPresent: UIViewController, анимированный: Bool)
presentCopy (viewControllerToPresent: UIViewController, анимированный: Bool, завершение: (() -> Void)?)
Откуда это несоответствие?
1 ответ
Я думаю, это потому, что вы определяете метод в чистом классе Swift, тогда как present
метод UIViewController
определяется в классе Objective-C.
В Objective-C нет понятия значений параметров по умолчанию.
Даже обратное верно. Если вы получаете доступ к вашему presentCopy
метод внутри класса Obj-C, объявление метода будет иметь все значения и будет только один метод.