如何修复方法'initialize()'定义了Objective-C类方法'initialize',这是Swift 4中不允许的?
Posted
技术标签:
【中文标题】如何修复方法\'initialize()\'定义了Objective-C类方法\'initialize\',这是Swift 4中不允许的?【英文标题】:How to fix Method 'initialize()' defines Objective-C class method 'initialize', which is not permitted by Swift in Swift 4?如何修复方法'initialize()'定义了Objective-C类方法'initialize',这是Swift 4中不允许的? 【发布时间】:2017-06-12 08:48:04 【问题描述】:我正在将我的应用程序从 Swift 3 更新到 Swift 4,迁移后出现一些错误。其中之一是IQKeyboardManager
IQToolbar 中的Method 'initialize()' defines Objective-C class method 'initialize', which is not permitted by Swift
,如何解决?
【问题讨论】:
【参考方案1】:- 你也可以使用 Singleton 解决这个问题,例如:
static let shared : AudioTools =
$0.initialize()
return $0
(AudioTools())
你的 Objective-C 方法--->初始化
override class func initialize()code here
改变:
func initialize()code here
你的方法在这里:
func playSound(fileName:String?)
code here
在 Swift3 中使用:
let audioPlayer = AudioTools.playMusic(fileName: fileName)
在 Swift4 中使用
let audioPlayer = AudioTools.shared.playMusic(fileName: fileName)
【讨论】:
我已经在这个链接中回答了:***.com/a/46360311/1581772 我展示了你可以在哪里使用单例(就像@user8152635 一样)或者你可以在哪里使用公共静态方法以上是关于如何修复方法'initialize()'定义了Objective-C类方法'initialize',这是Swift 4中不允许的?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复未定义的方法“find_by_friendly_id”