【发布时间】:2017-02-24 16:51:56
【问题描述】:
我正在尝试在 NSLayoutAnchor 上创建一个扩展方法来接受乘数。我得到一个奇怪的 Swift 编译错误(Swift 3,XCode 8.2.1),不是在扩展文件中,而是在模块的相应 .h 文件(该文件由编译器自动生成)中:
@interface NSLayoutAnchor (SWIFT_EXTENSION(MYMODULENAME))
- (NSLayoutConstraint * _Nonnull)constraintTo:(NSLayoutAnchor</* AnchorType */> * _Nonnull)anchor multiplier:(CGFloat)m;
@end
错误指向/* AnchorType */ 并说:“预期类型”。嗯,这是有道理的,因为 /* AnchorType */ 不是类型而是注释。但是我在方法签名中使用了AnchorType 类型参数。
扩展源码如下:
extension NSLayoutAnchor {
open func constraint(to anchor: NSLayoutAnchor<AnchorType>, multiplier m: CGFloat) -> NSLayoutConstraint {
// ...
}
}
【问题讨论】:
-
此扩展位于我的主项目的单独模块中。当我在我的主项目中移动扩展代码时,一切正常。这一定是构建模块接口时的某种混淆。
标签: swift uikit nslayoutanchor