2012-07-13 4 views
5

私は私のコントローラのうち、私のビューを取得するには、次のコードを使用します。カスタムクラスの場合、NSViewControllerのビューを取得しますか?

CollectionItemView *myView = [self view]; 

これはかなりうまく動作しますが、私は警告Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSViewを取得します。なぜ私はこれを取得するが、それを無視するか、または私はビューのプロパティを上書きする必要があります大丈夫です理解する?

チャック

答えて

2

あなたは[self view]CollectionItemViewであることが確実な場合だけ実行します。上書きする必要はありません

id myView = [self view]; 
0

:あなたが使用することができます(優れている)

CollectionItemView *myView = (CollectionItemView*)[self view]; 

かをそれ。 trooleeは既に2つのワーキングソリューションを提案しています。 しかし、ちょうど私がむしろそれを別の方法でコード化することを救うために。あなたは、オブジェクトの型がCollectionItemViewまたはそのサブクラスのいずれかでなければならない状況から確実に知るとき

CollectionItemView *myView = nil; 
if ([[self view] isKindOfClass:[CollectionItemView class]) 
    self.view = (CollectionItemView*)[self view]; 

isKindOfClassテストなしの短いバージョンはokです。

関連する問題