如何修复方法'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中不允许的?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 VueJS 中的“未定义属性或方法”错误

如何修复未定义的方法“find_by_friendly_id”

如何使用 ob_start 追加到文件

如何修复“NameError:名称方法名称未定义”? [复制]

如何在取消设置变量后修复会话未启动

如何修复返回“未定义”的异步函数?