Xcode 8ベータ5に更新し、UIViewを継承するクラスで次のエラーが表示されるようになりました。
Method does not override any method from its superclass
override public func intrinsicContentSize() -> CGSize
{
...
}
回避策はありますか?
最新のリファレンス を確認してください。 ( Appleの開発者サイト の検索バーに「intrinsicContentSize」という単語を入力するだけで簡単に見つけることができます。)
宣言
var intrinsicContentSize: CGSize { get }
intrinsicContentSize
は計算プロパティになっているため、次の方法でオーバーライドする必要があります。
override open var intrinsicContentSize: CGSize {
get {
//...
return someCGSize
}
}
または単に:
override open var intrinsicContentSize: CGSize {
//...
return someCGSize
}
Xcodeのあるバージョンから別のバージョンに移行する際、コードがコンパイルされなくなった理由を見つけるためのさまざまな方法があります。 intrinsicContentSize
のリソースは次のとおりです。
intrinsicContentSize
を検索できます。intrinsicContentSize
は、 IViewのApple Developer APIリファレンスページ から直接検索できます。intrinsicContentSize
のインスタンスを検索できます(ショートカット: cmd + F)。intrinsicContentSize
を検索できます。 Help > Documentation and API Reference、ショートカット: shift + cmd + )。UIView
初期化子(たとえば、UIView()
)を右クリックして、選択することもできます。 Jump to Definition intrinsicContentSize
の検索を実行します。これらの検索により、Swift 3およびiOS 10のintrinsicContentSize
はメソッドではなく、次の宣言を持つUIView
の計算されたプロパティであることがわかります:
_
var intrinsicContentSize: CGSize { get }
_
結果として、intrinsicContentSize()
メソッドの実装を次のコードスニペットで置き換える必要があります。
_override public var intrinsicContentSize: CGSize {
return ...
}
_