質問: YES; [self addSubview:circleImageView]; } ``` この中の一番下の行でエラーが出ます。エラーメッセージは 「No visible @interface for '(このクラス名)' declares the selector 'addSubview:'」 です。このエラーの解決方法をどなたかご教示いただけないでしょうか。 以上、何卒よろしくお願いいたします。
回答: > > 「No visible @interface for '(このクラス名)' declares the selector 'addSubview:'」 > > > 上記エラーメッセージの意味は「このクラスの@interface部に`addSubview:`メソッドの宣言が見つからないよ」という感じです。 このようなエラーの場合はまず、示されたクラスの宣言部(普通は.hファイルの方)を確認してみるか、又は`addSubview:`メソッドの定義を追うかすると良いです。 xcodeの最新版を使用しているなら、コード上で**commandキー**を押しながら`addSubview:`の文字列を選択すると定義されている箇所(が見つかれば)を表示できます。 私の環境ではこれでUIViewクラスの宣言部を表示できます。 つまり、selfが**UIViewクラスを継承していないため**このようなエラーが出ています。 なお、クラスの定義も上記方法で追えるので、自作のクラスの親クラスを追っていけばUIViewクラスを継承しているかどうかの確認ができます。 例: 1.UIViewControllerを継承したHogeViewControllerの継承関係 `HogeViewController -> UIViewController -> UIResponder -> NSObject` 2.UIViewの継承関係 `UIView -> UIResponder -> NSObject` 上記2つの継承関係から、HogeViewControllerの実装部内のselfに対してUIViewクラスのメソッドは使えないことがわかります。(ここではselfがUIViewControllerのサブクラスのため) それとは逆に、`alloc`や`init`などのメソッドが多くのクラスで使える理由は、Objective-Cで使うほとんど全てのクラスが、それらのメソッドを定義しているNSObjectを継承しているためです。