Я использую MWPhotoBrowser в проекте Swift. Одна проблема заключается в том, что подкласс MWPhotoBrowser не будет компилироваться с такой ошибкой:Подклассы Objective-C классов в Swift
:0: error: cannot override 'init' which has been marked unavailable
Мой код здесь:
class BrowseController: MWPhotoBrowser {
override init() {
super.init()
initialize()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialize()
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
initialize()
}
...
И вот все Инициализаторы родительского класса:
// Init
- (id)initWithPhotos:(NSArray *)photosArray __attribute__((deprecated("Use initWithDelegate: instead"))); // Depreciated
- (id)initWithDelegate:(id <MWPhotoBrowserDelegate>)delegate;
Переопределение этих инициализаторов в моем подклассе не помогает. Но если я создам подкласс MyBrowser в Objective-C, а затем подкласс этого класса, все работает нормально.
@interface MyBrowser : MWPhotoBrowser
- (id)init;
@end
@implementation MyBrowser
- (id)init {
if (self = [super init]) {}
return self;
}
@end
class BrowserController: MyBrowser {
...
Я использую Xcode 6.1. Является ли это ошибкой Swift или я что-то пропустил о Swift-intializers? Благодаря!