我正在快速構建一個框架。我正在創建一個在框架中處理BLE東西的類。這個類應該是公開的,因爲我需要從使用我的框架的外部應用程序訪問這個類。我的類結構是如下:爲什麼委託方法需要在Swift中公開?
public class MyClass: NSObject, CBCentralManagerDelegate {
}
MyClass
這裏是公開的,這證實一個公共協議CBCentralManagerDelegate
。編譯器強制我將它的委託方法聲明爲public。因此,這裏是我的實現是什麼樣子:
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和SO質疑here。我開始知道,因爲我的課程和協議都是公開的,所以方法應該公開。
問題是,外部應用程序可以很容易地創建我的類的實例,並調用這個方法,這是我的框架不期望的。
我想保持委託方法私人,所以沒有人可以手動調用它們。
我有什麼可能的解決方案?
你不能避免這種情況。一個協議描述了你的類的* public *接口。你不能只隱藏它。 – Sulthan