我已经声明了两个协议
@protocol DeletedDelegate <NSObject>
- (void) deletedObj: (id) p_objDeleted;
@end
@protocol BrowseDelegate <NSObject>
- (void) nextObj: (id) p_currentObj;
- (void) previousObj: (id) p_currentObj;
@end
在我的 viewController.h 文件中,我将代表声明如下:
@property (nonatomic, weak) id<DeletedDelegate> delegate;
@property (nonatomic, weak) id<BrowseDelegate> browseDelegate;
在 viewController.m 我有两个动作基本相同的代码
- (IBAction) previous_Clicked: (id) sender
{
//If anyone is listening
if ([self.browseDelegate respondsToSelector:@selector(previousObj:)]==YES)
{
//send them the new status
[self.browseDelegate previousObj:(self.currentObj)];
}
}
- (IBAction) trashBin_Clicked: (id) sender
{
//If anyone is listening
if ([self.delegate respondsToSelector:@selector(deletedObj:)]==YES)
{
//send them the new status
[self.delegate deleteObj:(self.currentObj)];
}
}
在界面旁边的 UITableViewController 中,我声明了这两个协议<DeletedDelegate, BrowseDelegate>
并实现了deleteObj
和previousObj
这是我的问题:在previous_Clicked
这[self.browseDelegate respondsToSelector:@selector(previousObj:)]
将始终返回 NO。
现在,如果我注释删除委托代码并将 browseDelegate 的名称更改为委托,它将正常工作。
如何在单个类中定义多个协议的委托/属性?