У меня есть очень простой класс Swift objc
, из которого я хочу вызвать метод, определенный в категории класса, определенного в Objective-C.
Однако, компилятор не доволен:
.../UploadOperation.swift:25:24: error: value of type 'MyServer' has no member 'clearPendingData'
self.server?.clearPendingData();
Когда я перемещаю объявление clearPendingData
в объявление основного класса, компилятор доволен (за исключением того, что теперь я получаю предупреждения в своем коде Objective-C о реализациях метода основного класса и категории).
Вот объявление Swift, в файле UploadOperation.swift
@objc class UploadOperation: Operation {
@objc var server: MyServer? = nil
override init() {
super.init()
self.completionBlock = { [unowned self] () in
self.server?.clearPendingData()
}
}
}
А вот и категория, в файле MyServer + upload.h:
#import "MyServer.h"
@class UploadOperation;
@interface MyServer (upload)
- (void) clearPendingData;
@end
И объявление основного класса, в файле MyServer.h
@interface MyServer : NSObject
- (MyServer *) init;
// and a ton of stuff omitted
@end
(конечно, много нерелевантного кода опущено)
Это с Xcode 10.1.
Что дает?
Спасибо