在Objective-C我有the following protocol:符合目的-C協議夫特類
@protocol GCKDeviceScannerListener <NSObject>
@optional
- (void)deviceDidComeOnline:(GCKDevice *)device;
- (void)deviceDidGoOffline:(GCKDevice *)device;
- (void)deviceDidChange:(GCKDevice *)device;
@end
當試圖以符合該協議在夫特的Xcode 6.1自動完成這樣的:
class ViewController: UIViewController, GCKDeviceScannerListener {
override func viewDidLoad() {
super.viewDidLoad()
var deviceScanner = GCKDeviceScanner();
deviceScanner.addListener(self);
deviceScanner.startScan();
println("scanning");
}
func deviceDidComeOnline(device: GCKDevice!) {
println("deviceDidComeOnline()");
}
func deviceDidGoOffline(device: GCKDevice!) {
println("deviceDidGoOffline()");
}
func deviceDidChange(device: GCKDevice!) {
println("deviceDidChange()");
}
}
代碼編譯並看似在模擬器上運行正常。但是,沒有一個監聽器功能被觸發。僅在運行Objective-C中編寫的the demo project from Google時,所有工作都可以正常工作。由於最後一部分,我假設網絡或硬件或類似的東西沒有任何問題。
這可能是我錯過了一些重要的東西,從https://developers.google.com/cast/docs/ios_sender,但我想知道如果斯威夫特代碼本身是正確的,根據協議。由於該協議只有可選功能,因此很難確定它是否正確。
您可以通過使用'self.respondsToSelector測試你的ViewController的協議一致性(「deviceDidComeOnline:」)' – Darren 2014-12-07 19:30:36