Xcode代碼提示變量為Error Type
我之前使用Masonry布局時候經常需要設定偏移量,但是呢在設定布局哪裡設定死資料不友善進行調試更換就想用一個變量。
我聲明一個Struct儲存一個試圖的上,左,下,右的偏移量和寬度和高度。
public struct CWSize {
public var top:CGFloat = 0
public var leading:CGFloat = 0
public var bottom:CGFloat = 0
public var trailing:CGFloat = 0
public var width:CGFloat = 0
public var height:CGFloat = 0
public var size:CGSize {
return CGSize(width: width, height: height)
}
}
複制
我聲明UIView的擴充
public extension UIView {
public func cw_makeSize(_ block:(_ size: CWSize) -> Void) {
let size = CWSize()
block(size)
objc_setAssociatedObject(self, "CWSize", size, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
public func cw_makeConstraints(_ block:(_ maker: ConstraintMaker, _ size: CWSize) -> Void) {
guard let size = objc_getAssociatedObject(self, "CWSize") as? CWSize else {
return
}
self.snp.makeConstraints { (maker) in
block(maker,size)
}
}
}
複制
看着沒什麼問題,但是在Xcode敲代碼時候提示 Error Type就是死活不提示,很不友善。
view.cw_makeSize({ (size) in
size
})
複制
解決辦法
我調用是在一個屬性的懶加載的方法裡面進行調用的會提示
Error Type
但是如果自己手動敲出來還是可以識别的
我在懶加載方法之外調用就可以完全的提示了,雖然解決了,但是在懶加載的初始化方法裡面為什麼不能提示暫時不知道什麼原因