ISHTTPOperation 1.2.0

ISHTTPOperation 1.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

Yosuke Ishikawa 维护。



  • Yosuke Ishikawa

是NSOperation的子类,用于包装异步NSURLConnection。

需求

  • iOS 4.0或更高版本
  • ARC(自动引用计数)

用法

NSURL *URL = [NSURL URLWithString:@"http://date.jsontest.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
[ISHTTPOperation sendRequest:request handler:^(NSHTTPURLResponse *response, id object, NSError *error) {
    if (error) {
        return;
    }
    // completion
}];

使用sendRequest:handler:执行的操作将被添加到[NSOperationQueue defaultHTTPQueue]中。

取消操作

[[ISHTTPOperationQueue defaultQueue] cancelAllOperations];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"request.HTTPMethod MATCHES %@", @"GET"];
[[ISHTTPOperationQueue defaultQueue] cancelOperationsUsingPredicate:predicate];
[[ISHTTPOperationQueue defaultQueue] cancelOperationsWithHTTPMethod:@"GET"];
[[ISHTTPOperationQueue defaultQueue] cancelOperationsWithHost:@"example.com"];
[[ISHTTPOperationQueue defaultQueue] cancelOperationsWithPath:@"/foo"];

安装

ISHTTPOperation/目录下的文件添加到您的Xcode项目中。

高级

管理网络指示器可见性

观察[ISHTTPOperation sharedQueue]operationCount键。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSOperationQueue *queue = [NSOperationQueue defaultHTTPQueue];
    [queue addObserver:self forKeyPath:@"operationCount" options:0 context:NULL];

    ...
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"operationCount"]) {
        UIApplication *application = [UIApplication sharedApplication];
        NSOperationQueue *queue = [NSOperationQueue defaultHTTPQueue];
        application.networkActivityIndicatorVisible = [queue operationCount] ? YES : NO;
    } else {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}

添加数据处理

要将数据处理添加到操作中,请重写processData:方法。
此方法在子线程中调用。

例如,JSON解析

- (id)processData:(NSData *)data
{
    NSError *error = nil;
    id object = [NSJSONSerialization JSONObjectWithData:data
                                                options:NSJSONReadingAllowFragments
                                                  error:&error];
    if (error) {
        NSLog(@"JSON error: %@", error);
    }
    return object;
}

许可证

版权 (c) 2013 Yosuke Ishikawa

任何获取此软件及相关文档副本(“软件”)的个人,免费允许在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件复制品,并允许提供给软件的人这样做,前提是本版权声明和许可声明应包含在所有复制品或实质部分中。

上述版权声明和本许可声明应包含在所有软件复制品或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这属于合同行为、侵权行为或其他,是否因软件或软件的使用或任何其他方式引起的。