Я мигрируют некоторые селекторы Swift 2.2, но у меня проблема с одним из них:Xcode 7.3, Swift 2.2: по умолчанию селектор инициализатора (новая проверка времени компиляции)
Код:
let hook = ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod("init") { // Default initialiser
presenceQueryWasCreated = true
}
Теперь Xcode хотят, чтобы помочь мне делать переход, но в неправильном направлении:
Код:
let hook = ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod(#selector(_NSEnumeratorType.init)) { // Default initialiser
presenceQueryWasCreated = true
}
Я пытаюсь это исправить:
Код:
let hook = ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod(#selector(ARTRealtimePresenceQuery.init)) { // Default initialiser
presenceQueryWasCreated = true
}
Итак, мой Questio n: Как я могу выбрать метод инициализации по умолчанию с новым синтаксисом #selector
?
(Он работал в Swift 2.0.)
Текущая ошибка:
"Неоднозначное использование 'Init()'"
UPDATE 1:
ARTRealtimePresenceQuery
Инициализаторы:
- (instancetype)init;
- (instancetype)initWithClientId:(nullable NSString *)clientId connectionId:(nullable NSString *)connectionId;
- (instancetype)initWithLimit:(NSUInteger)limit clientId:(nullable NSString *)clientId connectionId:(nullable NSString *)connectionId;
Я не знаком с этой структуры, что делает 'testSuite_injectIntoClassMethod' делать, и инициализации метод которого вы хотите сослаться? - Обратите внимание, что 'Selector (" init ")' остается в силе! –
@MartinR «testSuite_injectIntoClassMethod» добавляет блок кода после текущего 'селектора' для определенного класса. В этом случае я хочу добавить блок кода в инициализатор по умолчанию 'ARTRealtimePresenceQuery'. Могу ли я использовать 'Selector (« init »)' без предупреждения? Думаю, нет. – ricardopereira
Можете ли вы попробовать '#selector (ARTRealtimePresenceQuery.init as() -> ARTRealtimePresenceQuery)'?Он должен компилироваться без предупреждения, но не знаю, работает ли он по назначению. –