如何使特定平台可以访问功能? [复制]

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

然后根据您的平台构建不同的文件。

【讨论】:

这也是一个很好的方法,它用定制的局部性换取了模块化。预处理器指令和虚拟方法都有一些参数。

以上是关于如何使特定平台可以访问功能? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中使私有变量可访问? [复制]

如何使多个用户可以访问 iframe?

如何从 iPhone 中后台进程的名称访问(复制/修改)特定的 appfile 目录?

Android:- 如何在整个应用程序中使动态 HashMap 可访问? [复制]

使用resttemplate访问时,如何使端点仅接受springboot中启用@crossorigin的uri?为啥我没有收到 cors 错误? [复制]

如何仅为特定用户和角色显示和复制文档?