当前位置: 首页 > 面试题库 >

Mac命令行应用程序上的CoreBluetooth

尹小云
2023-03-14
问题内容

我正在尝试构建一个使用CoreBluetooth的命令行应用程序。问题是,它在命令行应用程序上不起作用。

我已将我的CoreBluetooth代码(实现CBCentralManagerDelegate协议的类-
称为此类myBLEManager)从命令行应用程序项目移至另一个Mac OS GUI应用程序。

我在ViewDidLoad()--supersample中运行了一些测试,我只是初始化了一个myBLEManager创建CBCentralManageron
实例的实例,然后调用scanForPeripherals

这是我在CLI和GUI项目中所做的事情。centralManagerDidUpdateState从未在CLI项目中调用差异。但它在GUI
Mac应用程序中可以。


问题答案:

大多数Apple框架中的回调都是通过应用程序的主运行循环传递的。如果您的命令行工具没有运行循环,则它将无法接收以这种方式发送的回调。

如果没有runloop,则框架调用回调的唯一方法是在另一个线程上运行它,这可能会导致意外的应用程序异常行为。

添加以下内容就足够了:

let runLoop = RunLoop.current
let distantFuture = Date.distantFuture
while running == true && runLoop.run(mode: RunLoopMode.defaultRunLoopMode, before: distantFuture) {

}


 类似资料:
  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,

  • > 我开发了一个javaFx应用程序,并在Mac的com.zenjava maven插件的帮助下创建了该应用程序的中间包。 bundle是用JDK:1.7.0_40.jdk创建的

  • 命令行应用,也被称为 控制台应用 是面向如 shell 之类文本接口的计算机程序。 命令行应用通常接收一些输入作为参数,这些参数(arguments)通常被称为参数(parameters)或子命令,而选项(options)则被称为信号(flags)或开关(switches)。 一些流行的命令行应用包括: Grep —— 一个纯文本数据搜索工具 curl —— 基于URL语法的数据传输工具 http

  • 问题内容: 我通常使用java.lang.ProcessBuilder和java.lang.Process来运行外部命令行程序,并且对运行和完成命令运行良好。例如,这将在工作目录中运行带有参数“ myArg”的“ myProgram”: 但是,假设我想运行脚本或程序或具有交互式输入的内容(启动后提示我提供更多输入)。我可以使用与上面类似的代码在Java中执行此操作,还是需要其他方法?还是有一些图书

  • 目前,我正在尝试使用和来运行Spring Boot应用程序,在默认情况下作为web应用程序运行,在需要时作为独立的命令行应用程序运行(通过某种命令行参数)。我正在努力弄清楚当提供程序参数时,如何单独将其作为控制台应用程序运行。请给出任何建议。 主类-SpringApplication CommandLineRunner