【发布时间】:2014-11-16 14:43:14
【问题描述】:
我在 Swift 项目中使用 MWPhotoBrowser。一个问题是 MWPhotoBrowser 的子类将无法编译并出现这样的错误:
:0: 错误:无法覆盖已标记为不可用的“init”
我的代码在这里:
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;
在我的子类中覆盖这些初始化器没有帮助。但是,如果我在 Objective-C 中创建一个 MyBrowser 子类,然后从这个类中创建一个子类,一切正常。
@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 初始化程序的东西?谢谢!
【问题讨论】:
标签: ios objective-c swift