【问题标题】:Would it have any bad influence to add @objc to a Swift method or variable?将 @objc 添加到 Swift 方法或变量中会有什么不好的影响吗?
【发布时间】:2018-01-14 02:17:48
【问题描述】:

我在 Swift 项目中导入了一些 Objective-C 文件,并尝试访问一些 Swift 类。
根据Apple's Guideline,我将@objc 添加到我希望将其公开给Objective-C 文件的方法中。
但问题是,这个“@objc”对我的 Swift 项目有什么副作用吗? 下面的代码是一个单例本地数据管理器。

@objc class LocalDataManager {

    @objc public static let shared = LocalDataManager()
    private init() {}


    @objc var nickName: String {
        get { return loadData("nickName") } // loadData is a convenience access method to UserDefaults
        set { UserDefaults.standard.set(newValue, forKey: "nickName") }
    }
}

【问题讨论】:

  • 如果要暴露给OC,你别无选择。否则不要加@objc,对性能不好。
  • 我同意@Lumiialxk 和答案。这是关于操作系统如何工作的。话虽如此-我不相信这实际上会对性能或大小产生任何影响-我不确定您是否需要在示例中将@objc 添加到所有内容中。只是类应该工作。如果有错误,我会删除此评论。
  • 有关为什么会降低性能的解释,请参阅raizlabs.com/dev/2016/12/swift-method-dispatch
  • @Alexander 感谢您的分享。太好了!

标签: objective-c swift


【解决方案1】:

@objc 关键字确实会严重影响性能。 Apple docs 声明:

应用@objc 属性会增加应用的编译大小并对性能产生不利影响。

因此,仅在您确实需要时才使用@objc

【讨论】:

猜你喜欢
  • 2012-08-08
  • 2014-09-24
  • 2013-11-12
  • 1970-01-01
  • 2022-01-27
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多