ios - 由于“内部”保护级别,sharedInstance 无法访问
问题描述
我已经导入了一个 cocoapod,它有助于将我的应用程序连接到蓝牙低功耗设备。尝试访问该类的实例时,我收到错误 sharedInstance is inaccessible 由于“内部”保护级别。为什么我会收到此错误?
下面是包含该实例的类。
import Foundation
import CoreBluetooth
import Alamofire
import SwiftyJSON
public class OBD2_BLE: NSObject, CBCentralManagerDelegate,
CBPeripheralDelegate {
var centralManager: CBCentralManager!
var obd2: CBPeripheral?
var dataCharacteristic:CBCharacteristic?
var obdCommands:[String: String]! = [
"speed": "010D",
"vin": "0902"
]
var configurationCommands = [
"ATE0",
"ATH0",
"ATS0",
"ATL0",
"ATSP0"
]
var obdResponse:[UInt8] = []
let endOfResponseNotificationIdentifier =
Notification.Name("endOfResponseNotificationIdentifier")
// setupOutput is expected output from device after reset (no prior
configuration)
// partialsetupOutput is expected output from device without reset
(device remained configured from previous run)
let restartSetupOutput = "\r\rELM327
v1.5\r\r>ATE0\rOK\r\r>OK\r\r>OK\r\r>OK\r\r>OK\r\r>"
let setupOutput = "ATE0\rOK\r\r>OK\r\r>OK\r\r>OK\r\r>OK\r\r>"
let partialsetupOutput = "OK\r\r>OK\r\r>OK\r\r>OK\r\r>OK\r\r>"
var setupComplete = false
var vinNumber:String?
static let sharedInstance = OBD2_BLE()
private static let setup = OBD2_BLESetup()
class func setup(restoreId: String){
OBD2_BLE.setup.restoreId = restoreId
}
public override init() {
super.init()
let restoreId = OBD2_BLE.setup.restoreId
if restoreId == nil {
self.initWithoutBackground()
} else {
self.initWithBackground(restoreId: restoreId!)
}
}
下面是我尝试访问实例
import UIKit
import CoreBluetooth
import OBD2_BLE
class BluetoothViewController: UIViewController, UITableViewDelegate {
@IBOutlet weak var bluetoothTableView: UITableView!
var deviceArray = [CBPeripheral]()
var centralManager : CBCentralManager!
var currentPeripheral : CBPeripheral?
let obd2 = OBD2_BLE.sharedInstance // Where i receive error
var currentRow : IndexPath?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
centralManager = CBCentralManager(delegate: self, queue: nil)
bluetoothTableView.dataSource = self
bluetoothTableView.delegate = self
}
解决方案
推荐阅读
- ffmpeg - FFMPEG - -rtbufsize 和 -thread_queue_size 之间有什么区别或关系?
- python - 我想在 sqlite3 的一行中将一个值添加到一个值
- mysql - Laravel:渴望加载用户特定的行
- node.js - Sequelize require 函数不会创建模型
- django - 使用 Websockets 通过 Http 进行 Django 身份验证
- python - Pyinstaller exe 崩溃,没有任何错误消息
- javascript - 如何在 JavaScript 中设置打印样式
- javascript - 在 Vuejs 3 中使用有效负载的正确方法
- sql - Sqlite /过去x个日历日的日期列表
- javascript - 如何从对象中的子项获取父键