Objective-C的MKNetworkKit开发框架解析

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

只需要设置 MKNetworkOperation的 outputStream 。

[operation setDownloadStream:[NSOutputStream         outputStreamToFileAtPath:@"/Users/mugunth/Desktop/DownloadedFile.pdf"                         append:YES]];

你可以设置多个 outputStream 到一个 operation,将同一文件保存到几个地方(例如其中一个是你的缓存目录,另一个用做你的工作目录)。

例4:

缓存图片的缩略图

对于下载图片,你可能需要提供一个绝对 URL 地址而不是一个路径。
MKNetworkEngine 的operationWithURLString:params:httpMethod: 方法根据绝对 URL地址来创建网络线程。

MKNetworkEngine 相当聪明。它会将同一个 URL 的多次 GET 请求合并成一个,当 operation 完成时它会通知所有的块。这显著提升了抓取图片 URL 以渲染缩略图的速度.

子类化 MKNetworkEngine然后覆盖图片的缓存目录及缓存的大小。如果你不想定制这二者,你可以直接调用 MKNetworkEngine中的方法来下载图片。这是我极力推荐的。

缓存operation

MKNetworkKit 默认会缓存所有请求。你所需要的仅仅是在你自己的 engine 中打开它。当执行一个 GET 请求时,如果上次的 response 已缓存,相应的 completion 块将用缓存的response 进行调用(瞬间)。要想知道 response 是否缓存,可以调用 isCachedResponse 方法,如下所示:

复制代码
[op onCompletion:^(MKNetworkOperation *completedOperation) {

 

          if([completedOperation isCachedResponse]) {

              DLog(@"Data from cache");

          }else {

              DLog(@"Data from server");

          }

            DLog(@"%@", [completedOperation responseString]);