如何实施委托代替通知

## NetworkClass

-(void)getResponse:(NSString *)url{ NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; [urlRequest setHTTPMethod:@"GET"]; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration]; NSURLSessionDataTask *task = [session dataTaskWithRequest: urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { //check if we encountered an error if(error != nil){ NSLog(@"%@", [error localizedDescription]); }else{ //get and check the HTTP status code NSInteger HTTPStatusCode = [(NSHTTPURLResponse *)response statusCode]; if (HTTPStatusCode != 200) { NSLog(@"HTTP status code = %ld", (long)HTTPStatusCode); } [[NSOperationQueue mainQueue] addOperationWithBlock:^{ if(data != nil){ NSError *parseError = nil; NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError]; [[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadNotification" object:self userInfo:responseDictionary]; NSLog(@"The response is - %@",responseDictionary); } }]; } }]; [task resume]; } 

视图控制器

 -(void)viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notifyReload:) name:@"ReloadNotification" object:nil]; } 

在这里,我已经传达给视图控制器,响应来自服务器,并通过使用NSNOTIFICATION反映在视图控制器上的反应。实际上我想通过委托实现相同的事情。我是一个新的程序员,试图学习代表,但不能理解这些概念,并且善于用代码解释如何通过代表完成同样的任务。提前感谢!

你可以使用callback块:

使用块声明的方法:

 -(void)getResponse:(NSString *)url AndWithCallback:(void(^)(BOOL success, id responseObject))callback{ if(data != nil){ callback(YES,@"Your object"); } else{ callback(NO,@"pass nil"); } } 

调用方法:

 [self getResponse:@"" AndWithCallback:^(BOOL success, id responseObject) { NSLog(@"%@",responseObject); }];