Type "xxx" does not confirm to protocol 'NSObjectProtocol'エラーの対処法

はじめに

タイトル通りのエラーが出た時の対処法です。

例えば、Objective-Cのライブラリで、以下のようなプロトコルがあり、

@protocol Hogehoge <NSObject>

これを宣言しようとした際、

class Fuga: Hogehoge

以下のようなエラーが出ます.

Type "Fuga" does not confirm to protocol 'NSObjectProtocol'

これは、Hogehoge自体がNSObjectを継承したものなので、Fugaにその定義が無いとエラーを起こしているのですが、XCodeの補助機能で、足りていない定義を追加しようとした場合、下記のようになってしまいます。

    func isEqual(_ object: Any?) -> Bool {
        <#code#>
    }
    
    var hash: Int
    
    var superclass: AnyClass?
    
    func `self`() -> Self {
        <#code#>
    }
    
    func perform(_ aSelector: Selector!) -> Unmanaged<AnyObject>! {
        <#code#>
    }
    
    func perform(_ aSelector: Selector!, with object: Any!) -> Unmanaged<AnyObject>! {
        <#code#>
    }
    
    func perform(_ aSelector: Selector!, with object1: Any!, with object2: Any!) -> Unmanaged<AnyObject>! {
        <#code#>
    }
    
    func isProxy() -> Bool {
        <#code#>
    }
    
    func isKind(of aClass: AnyClass) -> Bool {
        <#code#>
    }
    
    func isMember(of aClass: AnyClass) -> Bool {
        <#code#>
    }
    
    func conforms(to aProtocol: Protocol) -> Bool {
        <#code#>
    }
    
    func responds(to aSelector: Selector!) -> Bool {
        <#code#>
    }
    
    var description: String

解決方法

これを埋めても良いのですが・・・、
単純にプロトコルを継承するだけなのと、NSObjectが使えれば良いだけなので、

class Fuga: NSObject, Hogehoge

と、NSObjectを継承しておけば解決します。

久々にiOS開発してここで詰まってしまった為、備忘録的な記事でした。