Cocoa 如何更改或扩展NSCollectionView';谁的代表?
Cocoa 如何更改或扩展NSCollectionView';谁的代表?,cocoa,delegates,nscollectionview,Cocoa,Delegates,Nscollectionview,NSCollectionView有一个委托,该委托应符合NSCollectionViewDelegate - (id < NSCollectionViewDelegate >)delegate @protocol extendedProtocol <NSCollectionViewDelegate> 现在,在我的CollectionViewItem的控制器类中,我尝试以以下方式调用委托的方法: if ( [self collectionView] &
NSCollectionView
有一个委托,该委托应符合NSCollectionViewDelegate
- (id < NSCollectionViewDelegate >)delegate
@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 dg=[[self-collectionView]委托];
BOOL flag=[dg doSomeWork:@“abc”];
但随后我得到警告,“不兼容的指针类型正在使用类型为'id'的表达式初始化'id'
更改NSCollectionView委托协议的正确方法是什么?您需要强制转换。如下所示:
BOOL flag = [(id <extendedProtocol>) [[self collectionView] delegate] doSomeWork:@"abc"];
BOOL-flag=[(id)[[self-collectionView]委托]doSomeWork:@“abc”];
或者在您的第二个示例中:
id <extendedProtocol> dg = (id <extendedProtocol>) [[self collectionView] delegate];
iddg=(id)[[self-collectionView]委托];