Подписи метода Objective-C совпадают после преобразования Swift

У меня есть два метода в моей объектной c-библиотеке, которые после преобразования в Swift, похоже, имеют одну и ту же подпись метода. В Objective-C они следующие:

- (void)doSomething:(UIViewController *)viewController __attribute__((deprecated)); - (BOOL)doSomething:(UIViewController *)viewController error:(NSError **)error; 

Из того, что я прочитал о Swift-преобразовании методов с использованием возвращаемых значений NSErrors + BOOL в Objective-C, эти методы будут иметь следующие подписи метода Swift:

 func doSomething(viewController: UIViewController) func doSomething(viewController: UIViewController) throws 

Поскольку первый вызов на самом деле не рекомендуется в Objective-C, существует ли способ заставить вызовы, сделанные для этого метода, использовать вторую подпись (чтобы я мог воспользоваться полученными ошибками)?

Я пытаюсь вызвать метод следующим образом:

 do { try myObjectInstance.doSomething(self) } catch let error as NSError { print(error) } 

Этот подход, по-видимому, не соответствует первому объявлению, что дает мне предупреждение о том, что а) метод устарел и б) нет ничего, что можно уловить, потому что не возникает ошибок.

One Solution collect form web for “Подписи метода Objective-C совпадают после преобразования Swift”

Вы можете использовать макрос NS_SWIFT_UNAVAILABLE чтобы пометить его недоступным для Swift:

 - (void)doSomething:(UIViewController *)viewController __attribute__((deprecated)) NS_SWIFT_UNAVAILABLE("use the throwing variant"); 

Тогда компилятор Swift выберет единственный доступный метод, который будет другим.

(В моих тестах это, похоже, нарушает автозаполнение – вы можете указать ошибку об этом.)

  • Добавить другой цвет контактов с MapKit в swift 2.1
  • Работает ли режим отладки Xcode 7?
  • Swift 2.0: делегат не работает
  • Swift 2.0 Сегодня проблемы с расширением
  • Swift 2 и 3: Как использовать CGBitmapContextCreate
  • Как сохранить соединение XMPP в приложении IOS, когда приложение находится в фоновом режиме?
  • как создать изображение в оттенках серого из nsimage в swift?
  • ошибка healthKit в swift2 после миграции из swift 1.2
  • Уровень оптимизации влияет на сравнение перечислений
  • Проблема экземпляра UIViewController
  • Как определить дату запуска действительного уведомления
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.