intrinsicContentSize() - Method does not override any method from its superclass

后端 未结 2 1260
攒了一身酷
攒了一身酷 2020-12-05 13:47

I updated to Xcode 8 beta 5, and now get the following error on a class that inherits from UIView:

Method does not override any method from its superclass

o         


        
相关标签:
2条回答
  • 2020-12-05 14:19

    While transitioning from one version of Xcode to another, there is different ways to find out why your code does not compile anymore. Here are a few resources for intrinsicContentSize:

    1. You can search for intrinsicContentSize from developer.apple.com.
    2. You can search for intrinsicContentSize straight from Apple Developer API Reference page for UIView.
    3. You can open the iOS 10.0 API Diffs for UIKit page and search for instances of intrinsicContentSize with your browser's find menu (shortcut: cmd + F).
    4. You can search for intrinsicContentSize from Xcode's Documentation and API Reference (path: Help > Documentation and API Reference, shortcut: shift + cmd + 0).
    5. You can also right-click on any UIView initializer in your Xcode code (for example, UIView()), select Jump to Definition and then perform a search for intrinsicContentSize.

    These searches will show you that intrinsicContentSize, with Swift 3 and iOS 10, is no more a method but a computed property of UIView that has the following declaration:

    var intrinsicContentSize: CGSize { get }


    As a consequence, you will have to replace your intrinsicContentSize() method implementation with the following code snippet:

    override public var intrinsicContentSize: CGSize {
        return ...
    }
    
    0 讨论(0)
  • 2020-12-05 14:34

    Please check the latest reference. (You can easily find it just putting the word "intrinsicContentSize" in the searchbar of Apple's developer site.)

    Declaration

    var intrinsicContentSize: CGSize { get }
    

    intrinsicContentSize has become a computed property, so you need to override it in this way:

    override open var intrinsicContentSize: CGSize {
        get {
            //...
            return someCGSize
        }
    }
    

    Or simply:

    override open var intrinsicContentSize: CGSize {
        //...
        return someCGSize
    }
    
    0 讨论(0)
提交回复
热议问题