2015-11-04 43 views
0

林重写指定初始化试图继承一个类我做了继承NSObject的,这些都是片段:斯威夫特:初始化程序不自其超

bPlayer.swift:

import UIKit 
import Foundation 
import QuartzCore 

class bluetoothPlayer: player { 

    override init (game: MultiGame) { 
     super.init(game: game) 

    } 

} 

Player.swift :

import UIKit 
import Foundation 
import QuartzCore 

class player: NSObject { 

    init (game: NSObject) { 
     super.init() 

    } 

} 

,但我得到了以下错误:

Initializer does not override a designated initializer from its superclass

如果我删除从bluetoothPlayer初始化的“覆盖”关键词,下面的错误出现,而不是:

Initializer 'init(game:)' with Objective-C selector 'initWithGame:' conflicts with initializer 'init(game:)' from superclass 'player' with the same Objective-C selector

回答

1

那是因为你没有。你没有覆盖的功能,你超载它。您创建了一个新功能(init),但名称相同,但的参数不同。这并不算作重写函数。

请参阅this SO问题(但在Java中)。请参阅this other关于在Swift中重写多个函数的SO问题。

这是因为NSObjectMultiGame

可以通过声明它像这样在bluetoothPlayer覆盖您init功能:

override init (game: NSObject) { 
    super.init(game: game) 
} 

你可以做一个检查,以确保gameMultiGame类型来达到与你所写的相同的效果。

+0

谢谢!这工作! –