Ios 如何在Swift中使用具有相同协议变量的多个协议?
在swift中,我实现了两个协议,Ios 如何在Swift中使用具有相同协议变量的多个协议?,ios,swift,protocols,Ios,Swift,Protocols,在swift中,我实现了两个协议,GADCustomEventInterstitual和GADCustomEventBanner 这两个协议都需要一个名为delegate的属性委托在每个协议中是不同的类型,因此会产生冲突 class ChartBoostAdapter : NSObject, GADCustomEventInterstitial, GADCustomEventBanner, ChartboostDelegate{ var delegate:GADCustomEv
GADCustomEventInterstitual
和GADCustomEventBanner
这两个协议都需要一个名为delegate
的属性<代码>委托在每个协议中是不同的类型,因此会产生冲突
class ChartBoostAdapter : NSObject, GADCustomEventInterstitial, GADCustomEventBanner, ChartboostDelegate{
var delegate:GADCustomEventInterstitialDelegate?; // Name conflict
var delegate:GADCustomEventBannerDelegate?; // Name conflict
override init(){
}
...
}
简单的答案是你不能
可能一个协议依赖于另一个协议,在这种情况下,您将对委托的类型使用依赖协议
它们是库/框架这不是我的定义
显然,您不能让同一个类同时采用这两种协议。但你真的不需要。只需将此功能分为两个不同的类,这显然是这些协议的设计者的意图。您应该有一个类采用GADCustomEventInterstitial并具有其
委托
,另一个类采用GADCustomEventBanner
并具有其委托
。你有什么理由强迫他们成为同一类人?正如在所有使用框架的事情中一样,不要反对框架,服从它。事实上这是可能的,我只是遇到了同样的情况。我有两种不同但相关的协议。在某些情况下,我需要两者都由委托实现,在其他情况下,只有一个,我不想有两个属性,例如。。。委派1,委派2
您需要做的是创建另一个从两个协议继承的组合协议:
protocol ChartBoostAdapterDelegate: GADCustomEventInterstitialDelegate, GADCustomEventBannerDelegate { }
class ChartBoostAdapter : NSObject, GADCustomEventInterstitial, GADCustomEventBanner, ChartboostDelegate {
weak var delegate: ChartBoostAdapterDelegate?
override init(){
}
...
}
不要在协议定义中同时称它们为
delegate
。它们是库/框架。这不是我的定义,那么一个类不能同时采用它们。“也许一个协议依赖于另一个协议”,不幸的是,它不能;我看了看(