You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用IOBluetoothHostController.default()时出现异常问题咨询

解决IOBluetoothHostController.default()输出stderr异常的问题

我之前也碰到过这个烦人的情况!你说的没错,功能完全正常,但调用IOBluetoothHostController.default()时就是会在标准错误输出里冒出一些奇怪的日志,看着特别碍眼。其实这根本不是你的代码问题,是这个版本的IOBluetooth框架本身会输出一些内部调试信息,并非真正的运行错误。

如果想要彻底屏蔽这些输出,同时又不影响后续代码的正常错误日志输出,可以试试临时重定向标准错误输出的方法,具体代码如下:

import Foundation
import IOBluetooth

// 先保存原始的stderr文件描述符
let originalStderr = dup(STDERR_FILENO)
// 把stderr临时重定向到/dev/null(直接丢弃所有输出)
freopen("/dev/null", "w", stderr)

// 调用那个会输出日志的方法
let controller = IOBluetoothHostController.default()

// 恢复原来的stderr,确保后续错误能正常输出到控制台
dup2(originalStderr, STDERR_FILENO)
close(originalStderr)

if let controller = controller {
    if controller.powerState.rawValue == 1 {
        print("Bluetooth is on")
    } else {
        print("Bluetooth is off")
    }
} else {
    print("Can't get Bluetooth...")
}

原理很直白:在调用default()之前,我们把标准错误输出转到/dev/null,让框架的内部日志直接被丢弃;调用完成后再把stderr恢复成原来的状态,这样后续代码如果有真正的错误信息,还是能正常输出到控制台的。

要是觉得这个方法有点繁琐,其实也可以选择直接忽略这些日志——毕竟它完全不影响功能的正常运行,只是视觉上不太舒服而已。

内容的提问来源于stack exchange,提问作者Mox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:29:15