我正在快速开发一个框架。我正在创建一个处理框架中 BLE 内容的类。这个类应该是公共的,因为我需要从使用我的框架的外部应用程序访问这个类。我的班级结构如下:
public class MyClass: NSObject, CBCentralManagerDelegate {
}
Here MyClass
是公开的,这确认了公共协议CBCentralManagerDelegate
。编译器强制我将其委托方法声明为公共方法。所以我的实现是这样的:
public class MyClass: NSObject, CBCentralManagerDelegate {
public func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
}
// I don't want delegate methods to be public, delegate methods should be like:
//func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
//}
}
我探索过苹果文档here https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html和一个SO问题here https://stackoverflow.com/questions/28329563/delegate-method-must-be-declared-public。我开始知道,由于我的类和协议都是公共的,因此方法应该是公共的。
问题是,外部应用程序可以轻松创建我的类的实例并调用此方法,这是我的框架所不期望的。
我想将委托方法保持私有,这样就没有人可以手动调用它们。
我有哪些可能的解决方案?