#selector #swift3
#селектор #swift3
Вопрос:
В Swift 2.3 [XCTest performTest:]
был переведен на Swift как public func performTest(run: XCTestRun)
В Swift 3.0 это стало open func perform(_ run: XCTestRun)
С этим изменением я застрял, пытаясь получить селектор методов (даже следуя предложениям https://bugs.swift.org/browse/SR-1016 и https://bugs.swift.org/browse/SR-1033 ).
#selector(XCTest.perform(_:)) -> matches NSObject's performSelector
#selector(XCTest.perform as (XCTestRun) -> Void) -> ambiguous reference to member 'perform'
#selector(XCTest.perform(_:) as (XCTestRun) -> Void) -> cannot convert value of type '(Selector!) -> Unmanaged<AnyObject>!' to type '(XCTestRun) -> Void' in coercion
Как мне performTest
правильно получить селектор?
Ответ №1:
Увы, тип XCTest.perform(_:)
curried , поэтому понадобится уродливый:
#selector(XCTest.perform(_:) as (XCTest) -> (XCTestRun) -> Void)