Подписи метода 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 выберет единственный доступный метод, который будет другим.

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

  • Как выполнить базовую реализацию делегирования в Swift?
  • Массив в массиве (2D-массив?)
  • Swift 2: защита в петле?
  • Как отклонить viewController в ios с помощью Swift
  • Запись видео с помощью AVCaptureSession, добавление CIFilter к нему и сохранение его в фотоальбоме
  • Общий контроллер в swift 2.0 с использованием раскадровки
  • Вложенные закрытия в Swift 2.1
  • Показать Admob Межстраничные объявления между сценами в Swift SpriteKit
  • iOS 9 Разрывает анимацию UILabel
  • Быстрый файл - как отключить все предупреждения?
  • Утечка памяти в структурах Swift. Как это исправить?
  • Interesting Posts

    Phonegap – Сохранить изображение с URL-адреса в галерее устройств

    iOS получает физический размер экрана программно?

    Не удается установить приложение ios через JENKINS

    Xcode начинается с точки останова «Thread 1: точка останова 1.2»

    Получить имя файла изображения, сохраненного в фотоальбоме

    Пользовательская резервная кнопка в LAContext Не поддерживается в ios8.3

    Swift link Изображение из массива Parse с использованием segues для secondViewController

    Изменение размера GLKView

    Преобразование NSInteger в NSIndexpath

    Изменить координату MKOverlay для MKOverlayView

    Xcode 7 НЕ создаст действительный архив из того же проекта, который строит действительный архив в Xcode 6

    Добавление замыкания в качестве цели в UIButton

    Как вращать объект вокруг произвольной точки?

    AppCode: отключить автоматическую привязку

    Применение расширенного текстового формата для выбранного текста UITextView в iOS

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.