Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在swift 2.3中使用#undef指令大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我想在 swift 2.3中取消定义或覆盖NSLocalizedString,我搜索了很多关于它的内容,最后我在Objective C中找到了一种方法,如下所示. #undef NSLocalizedString #define NSLocalizedString(key,_comment) your_Function_name 我想在swift中实现这个功能. 我只知道NSLocalizedSt
我想在 swift 2.3中取消定义或覆盖NSLocalizedString,我搜索了很多关于它的内容,最后我在Objective C中找到了一种方法,如下所示.

#undef NSLocalizedString
#define NSLocalizedString(key,_comment) your_Function_name

我想在swift中实现这个功能.
我只知道NSLocalizedString是NSBundle.h中的一个宏,用于Objective C.所以我们可以重新定义它.但是对于swift我们无法实现这个.我只想重新定义或覆盖swift的NSLocalizedString函数.请帮我理清这个.任何帮助,将不胜感激.

解决方法

#undef是一个 C preprocessor directive,和Swift does not support any preprocessor directives,包括用于NSLocalizedString的复杂#define宏.实际上,它被导入为:

/// Returns a localized String,using the main bundle if one is not specified.
public func NSLocalizedString(_ key: String,tablename: String? = default,bundle: Bundle = default,value: String = default,comment: String) -> String

但是,您可以通过编写自己的实现轻松完成预期的行为,这应该自动使用.例如:

public func NSLocalizedString(_ key: String,tablename: String? = nil,bundle: Bundle = Bundle.main,value: String = "",comment: String) -> String {
    // Do your magic here!
    return "test"
}

但请不要这样做.创建一个不同的功能会好得多.否则,将不清楚您的函数是否正在使用,或者您可能得到:错误:如果您需要更改签名,则模糊地使用’NSLocalizedString(_:tablename:bundle:value:comment :)’即使你只是想做一些可选的东西.

大佬总结

以上是大佬教程为你收集整理的如何在swift 2.3中使用#undef指令全部内容,希望文章能够帮你解决如何在swift 2.3中使用#undef指令所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。