【发布时间】:2016-03-14 12:29:28
【问题描述】:
让我澄清一下我的问题。我想要一个通用的共享类来调用网络服务。我还想使用 Block 处理响应中的数据和错误。
我得到了答案。正如 Amin 所说,我可以制作如下共享实例:
+ (instancetype)sharedInstance
{
static NetworkManager *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[NetworkManager alloc]init];
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:sharedInstance delegateQueue:nil];
});
return sharedInstance;
}
之后我可以定义如下方法:
-(void) fetchDataForURL : (NSString*)urlString postData:(NSDictionary*)dataDic WithCompletionBlock : (void(^) (NSDictionary *responseDictionary, NSError *error)) completionBlock
{
// sending request here using NSURlConnection or NSURLSession
// whatever data I get here I can get that data in the completionBlock declared in the method
completionBlock(jsonDic, error);
}
现在,我可以使用共享实例在任何类中调用该方法。我也可以在完成块中获取数据。
希望我说得不太清楚。 谢谢大家的帮助。
【问题讨论】:
-
什么问题...?你想要一个 NSURLSession 的示例代码吗?
-
我认为要求是,一个模型类使用 NSURLSession 处理所有 Web 服务调用,对吧?
标签: ios design-patterns delegates singleton nsurlsession