Objective-C的MKNetworkKit开发框架解析

2020-01-14 17:38:40王冬梅

 

    return op;


上述代码格式化 URL 并创建了 MKNetworkOperation。设置完 completion 和 error 块之后,将 operation 加入到队列(通过父类的 enqueueOperation 方法),然后返回一个 operation 的引用。因此,如果你在 viewDidAppear 中调用这个方法,则在 viewWillDisappear 方法中取消operation。取消 operation 将释放 operation 以便执行 queue 中用于其他view 的 operation(牢记,在移动网络中只有2 个 operation 能被同时进行,当 operation 不再需要时取消它们能提升 app 的性能和速度)。

 

在 viewcontroller 中也可以添加一个 progress 块用以刷新UI。例如:

复制代码
[self.uploadOperation onUploadProgressChanged:^(double progress) {  

 

      DLog(@"%.2f", progress*100.0);             

      self.uploadProgessBar.progress = progress;     }];


MKNetworkEngine 也有一个只用 URL 创建 operation 的有用方法。因此第1行代码也可以写成:

 

MKNetworkOperation *op = [self operationWithPath:YAHOO_URL(sourceCurrency, targetCurrency)];

注意,请求的 URL将自动添加上主机名(在 engine 实例化时指定的)。

 

像这样的实用方法 MKNetworkEngine还有许多,你可以查看头文件。

例2:

上传图片到服务器 (例如 TwitPic)。
现在让我们看一个上传图片到服务器的例子。要上传图片,显然要 operation 能编码 multi-part 表单数据。 MKNetworkKit 使用类似 ASIHttpRequest 的方式。
你可以非常简单地通过MKNetworkOperation 的 addFile:forKey:方法将一个文件作为请求中的 multi-part 表单数据提交。

MKNetworkOperation 也有一个方法,可以将图片以 NSData 的方式提交。即 addData:forKey: 方法,它可以将图片以NSData 的方法上传到服务器。 (例如直接从相机中捕获的图片).

例3:

下载文件到本地目录 (缓存)
使用MKNetworkKit 从服务器下载文件并保存到 iPhone 的本地目录非常简单。