Это класс, где я определил протокол. Класс I, определяющий протокол, является NSObject (если это имеет значение).Протокол не работает даже после установки делегата
Класс A:
import UIKit
import CoreBluetooth
protocol deviceNameDelegate {
func discoveredDeviceName(deviceName: String, peripheral: CBPeripheral)
}
class BlueCoreManager: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
...
var del: deviceNameDelegate?
...
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
if del != nil {
let peripheralName = peripheral.name!
let peripheralDevice = peripheral
print("Delegate is not nil")
del!.discoveredDeviceName(peripheralName, peripheral: peripheralDevice)
} else {
print("delegate is nil")
}
...
}
}
Класс B:
import UIKit
import CoreBluetooth
class availableDevicesViewController: UIViewController, deviceNameDelegate {
var ble = BlueCoreManager()
...
override func viewDidLoad() {
super.viewDidLoad()
ble.del = self
}
func discoveredDeviceName(deviceName: String, peripheral: CBPeripheral) {
...
}
}
Я реализовал пользовательские протоколы дважды, но я действительно тупик на это. Я не могу понять, почему он не работает. Последующие шаги:
a. Я разработал протокол в классе А
b. Сделана дополнительная переменная делегата в классе А
c. Передача значений через делегата в классе А
d. Добавлен протокол к классу B и реализована функция, чтобы он соответствовал протоколу
e. Установите делегата из класса A как self (например, класс B)
Я все еще довольно новый, чтобы быстро, поэтому, возможно, я мог что-то пропустить. Кто-нибудь может просветить свет? Что я не делаю?
используется для связи между дочерними и родительскими классами. –
так вы говорите, что я не могу использовать протокол для общения здесь? – Jobs
@Gagan_iOS Что вы имеете в виду? Это совершенно правильное использование делегатов. Между делегатом и делегатом не должно быть никаких конкретных отношений. – Paulw11