이것은 프로토콜을 정의한 클래스입니다. 프로토콜을 정의한 클래스는 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. A 클래스의 프로토콜 청사진을 만들었습니다
b. A 클래스에 선택적 대리자 변수를 만들었습니다.
c. A 클래스의 델리게이트를 통해 값 전달하기
d. 클래스 B에 프로토콜을 추가하고 프로토콜을 준수하도록 함수를 구현했습니다.
e. A 클래스의 델리게이트를 자체 클래스 (즉, 클래스 B)로 설정하십시오.
저는 아직 대단히 신속하므로 어쩌면 뭔가 놓친 것일 수 있습니다. 아무도 빛을 낼 수 있습니까? 나는 무엇을하지 않습니까?
프로토콜은 하위 클래스와 상위 클래스 통신에 사용됩니다. –
여기 프로토콜을 사용하여 통신 할 수 없다는 말씀입니까? – Jobs
@Gagan_iOS 당신은 무엇을 의미합니까? 이것은 대표자를 완벽하게 사용할 수 있습니다. 대의원과 대표단 – Paulw11