具有多个实例的自定义委托方法

Custom delegate methods with multiple instances

我创建了一个自定义类 NetworkManager。它有两个可选的委托方法。它工作得很好,但是,问题是当 NetworkManager 有多个实例时如何执行委托方法。这是我的代码片段;

NetworkManager.h

@protocol NetworkManagerDelegate <NSObject>

@optional
//call back for success message
-(void)handleSuccessMessageWithDictionary:(NSDictionary *) jsonDictionary;

//call back for fail message
-(void)handleFailureMessageWitDictionary:(NSDictionary *) jsonDictionary;

@end
@interface NetworkManager : NSObject

@property (nonatomic,assign) id<NetworkManagerDelegate> delegate;

@end

然后在我的视图控制器中我有:

#pragma-mark NetowrkManager Delegate
-(void)handleFailureMessageWitDictionary:(NSDictionary *)jsonDictionary{

//failure


}

-(void)handleSuccessMessageWithDictionary:(NSDictionary *)jsonDictionary{

//success

}

这对 NetworkManager 的一个实例非常有效,但如何区分两个实例?

例如,

#pragma-mark NetowrkManager Delegate
-(void)handleFailureMessageWitDictionary:(NSDictionary *)jsonDictionary{

//if its networkManagerA do
// method A
//else if its networkManagerB do
//method B

-(void)handleSuccessMessageWithDictionary:(NSDictionary *)jsonDictionary{

//if its networkManagerA do
// method A
//else if its networkManagerB do
//method B

}

非常感谢任何建议!

在创建 NetworkManager.h 的对象时,设置一个 属性 作为 class 创建其 object.In 委托方法的对象,检查 属性 和相应地执行您的操作。 在NetworkManager.h中创建一个属性@属性(非原子)id className;并在创建 NetworkManager.h 的对象时设置它:NETWORKManager.className = [self class]; 现在在 -(void)handleFailureMessageWitDictionary:(NSDictionary *)jsonDictionary{ 如果 (_class姓名 == A){ ... } else if (_className == B){ ... } }

delegated对象的实例传回delegate是正常的;请参阅 UITableViewDelegate 方法,例如:

- (BOOL)            tableView:(UITableView *)tableView
shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath;

这样一个委托对象就可以在多个实例上工作。

将实例传递回您的委托,类似于 UITableView 委托的工作方式:

-(void)handleSuccessMessageWithDictionary:(NSDictionary *)jsonDictionary manager:(NetworkManager *)manager

然后,只需从发送回调的实例传递self

[self handleSuccessMessageWithDictionary:json manager:self];