在Xcode 7.3和2.2雨燕暧昧使用的初始化的2.2
问题涉及两个Objective-C类和斯威夫特是如何看待自己的初始化建立时,我得到一个“暧昧使用的初始化”错误。
Objc认为:
超类
@interface Foo: NSManagedObject
+(instancetype)fooWithOwner:(Owner *)owner insertIntoManagedObjectContext:(NSManagedObjectContext *)context;
子类
@interface Bar: Foo
+(instancetype)barWithOwner:(Owner *)owner insertIntoManagedObjectContext:(NSManagedObjectContext *)context;
而斯威夫特只看到:
init(owner: Owner!, insertIntoManagedObjectContext context: NSManagedObjectContext!)
这导致编译器不确定在子类“Bar”上调用哪个init。有没有一种方法来指定初始化子类时使用哪个初始化器?如果可能的话,我想避免重构init方法。
可以重命名为'makeFooWithOwner ...'和'makeBarWithOwner ...'或者类似的东西,它不会将它们转换初始化器 – dan
你能发布你遇到问题的Swift代码吗?我复制/粘贴到一个新的项目,并没有任何麻烦编译。 – Kevin
没有理由为什么最初的Obj-C方法首先应该有不同的名称。 – Sulthan