在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