如何使特定平台可以访问功能? [复制]
Posted
技术标签:
【中文标题】如何使特定平台可以访问功能? [复制]【英文标题】:How to make a function accessible to a specific platform? [duplicate] 【发布时间】:2017-04-07 00:45:09 【问题描述】:我正在创建一个具有执行类似任务的函数的类,但其中一个使用的是仅在该平台上可用的 API。是否可以在为特定平台构建时使该功能无法访问?
例子:
class myClass
// How can I hide this function when I'm building for macOS?
class func myFunctionForios()
// And hide this when building for iOS?
class func myFunctionForMACOS()
【问题讨论】:
【参考方案1】:Swift 有 Preprocessor Directives 可以做到这一点:
func myFunction()
#if os(macOS)
// do something
#elseif os(iOS)
// do something else
#else
// do a final thing
#endif
更多信息here too。
【讨论】:
【参考方案2】:class ClassA
//define common method
virtual void MethodA() = 0;
class ClassA_iOS_Impl: public ClassA
//override your implement for iOS
void MethodA() override //call iOS specific API
class ClassA_Mac_Impl: public ClassA
//override your implement for Mac
void MethodA() override //call Mac specific API
然后根据您的平台构建不同的文件。
【讨论】:
这也是一个很好的方法,它用定制的局部性换取了模块化。预处理器指令和虚拟方法都有一些参数。以上是关于如何使特定平台可以访问功能? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iPhone 中后台进程的名称访问(复制/修改)特定的 appfile 目录?
Android:- 如何在整个应用程序中使动态 HashMap 可访问? [复制]
使用resttemplate访问时,如何使端点仅接受springboot中启用@crossorigin的uri?为啥我没有收到 cors 错误? [复制]