Swift 3, расширяющий универсальный класс Objective-C функцией, которая принимает закрытие

#ios #objective-c #generics #swift3

#iOS #objective-c #общие #swift3

Вопрос:

Я использую библиотеку objective-c, которая определяет универсальный класс, например:

 @interface BFTask<__covariant ResultType> : NSObject
  

Мне нужно добавить функцию в этот класс. Как только функция объявляет параметр, который является замыканием, я получаю сообщение об ошибке. Итак

 extension BFTask { func noClosure(param1: Int) { } }
  

компилируется нормально, пока

 extension BFTask { func withClosure(param1: (Int) -> Void) { } }
  

Результат «Сбой команды из-за сигнала: ошибка сегментации: 11»

Комментарии:

1. Это ваша программа, которая нарушает сегментацию, или компилятор?

2. Программа не компилируется.

3. Я бы предложил отправить отчет об ошибке…

4. Я только что это сделал. Давайте посмотрим, что произойдет.

5. Вы получили ответ на это?

Ответ №1:

Проблема была решена в Xcode 8.1.

Комментарии:

1. Это все еще происходит для меня, если я использую что-то вроде @interface MyClass<__covariant Type: MyClass *> : NSObject .