NSCollectionView
に準拠するデリゲートがありNSCollectionViewDelegate
ます。
- (id < NSCollectionViewDelegate >)delegate
を拡張する新しいプロトコルがありますNSCollectionViewDelegate
。
@protocol extendedProtocol <NSCollectionViewDelegate>
ここで、CollectionViewItem のコントローラー クラスで、次の方法でデリゲートのメソッドを呼び出そうとします。
if (
[self collectionView]
&& [[self collectionView] delegate] &&
[[[self collectionView] delegate] conformsToProtocol:@protocol(extendedProtocol)]
)
{
BOOL flag = [[[self collectionView] delegate] doSomeWork:@"abc"];
}
「インスタンス メソッド 'doSomeWork:' が見つかりません」という警告が表示され続けます。
やってみた
id <extendedProtocol> dg = [[self collectionView] delegate];
BOOL flag = [dg doSomeWork:@"abc"];
しかし、「型 'id' の式で 'id' を初期化する互換性のないポインター型です。
NSCollectionViewデリゲートのプロトコルを変更する正しい方法は何ですか?