gpt4 book ai didi

objective-c - 在 Swift 中覆盖 NS*** 方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:33 25 4
gpt4 key购买 nike

NSLocalizedString 提供后备语言,我在 Objective-C 中使用了 #undef#define:

#undef NSLocalizedString
#define NSLocalizedString(key, comment) @"NSLocalizedString has been replaced";

如果从 Objective-C 调用,这会工作得很好,但如果从 Swift 调用,NSLocalizedString 的新定义将被忽略。 (桥接接头已正确配置且有效)

这在 Swift 中是否可行,如果可行,如何实现?


注意:真实例子是here on Github , 另见 SO answer here

最佳答案

您可以像这样为 NSObject 子类执行此操作

extension NSObject {
func NSLocalizedString(key: String, comment: String) -> String {
return "yes we have localized an NSObject"
}
}

AnyObject 呢?在这种情况下,您必须了解并遵守 AnyObject 子类中的 FallbackLanguage 协议(protocol)

protocol FallbackLanguage: class {}

// add default implementations
extension FallbackLanguage {
func NSLocalizedString(key: String, comment: String) -> String {
return "yes we have localized AnyObject via FallbackLanguage protocol"
}
}

注意事项

  • 这两种解决方案都可以毫无问题地应用到您的项目中。
  • 如果您在类实例之外调用 NSLocalizedString,那您就不走运了。

关于objective-c - 在 Swift 中覆盖 NS*** 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com