0

メソッドを使用して背景色を簡単に変更できる NSView のサブクラスを作成しました- (void)setBackgroundColor:(NSColor *)aBackgroundColor

ビュー コントローラーのメイン ビューをこのサブクラスにしたいので、 で開始しself.view = [[BetterNSView alloc] initWithFrame...ます。

次の行では、背景色を設定しようとしています: [self.view setBackgroundColor:[NSColor greenColor]]. しかし、コンパイラは、NSView にはメソッドがないと言って不平を言いsetBackgroundColorます。

これを解決するには、 typecasting: を使用する必要があります[(BetterNSView *)self.view setBackgroundColor:[NSColor greenColor]];。それはうまくいきます。しかし、型キャストは必要ありません。

viewビュー コントローラのプロパティがBetterNSViewサブクラスであることをコンパイラに伝えるにはどうすればよいですか? 覚えておいてください、私はIBを使用していません。

4

1 に答える 1

2

合理的な選択肢が 2 つあります。

  1. プロパティを通過するだけの適切なタイプを使用して、View Controller にアクセサーを作成しますview
  2. タイプキャストを扱います。

本当に、これは型キャストが問題ない状況の 1 つです。

于 2013-04-02T19:51:31.100 に答える