我正在尝试为@IBDesignable
控件生成示例数据,因此在为IB构建时,我正在欺骗控件成为自己的数据源。结果是我在协议中添加了一些仅供IB使用的方法,作为一个好公民,我希望将其删除为常规(非IB版本)。
我已将问题归结为以下代码片段。我的协议如下: -
protocol TestProtocol {
#if TARGET_INTERFACE_BUILDER
func myControl(control:AnyObject, colorForIndex index:UInt) -> UIColor?
func myControl(control:AnyObject, textForIndex index:UInt) -> String?
#endif
}
这无法编译,其中的消息暗示了方法重载错误:"error: declaration conflicts with previous value"
。错误消息在第二个函数声明中,并引用第一个函数作为它与之冲突的前一个声明。
但这些不是重载,由于命名参数,它们具有不同的签名。这是跨Cocoa的这种标准委托命名约定,我无法在不理解原因的情况下重命名我的方法。
删除#if TARGET_INTERFACE_BUILDER
修复了问题,因此对我来说不再是一个紧迫的问题,但我完全难以理解为什么添加此条件编译会产生如此奇怪的错误?
答案 0 :(得分:0)
我不确定为什么会这样,但碰巧找到了合理的解决方法 只需将两个声明分开,如下所示:
request({
url: url,
json: true,
pool: {maxSockets: Infinity},
timeout: 2000
})