iOS Developer程序员架构设计与重构

CTNetworking源码拾遗

2016-09-05  本文已影响944人  AliThink

一句话简介:CTNetworking为casa大神针对iOS网络层方案的一个架构实例。

架构详解: 传送门

Github: 传送门

PS: 本拾遗系列文章只专注于代码以及工程层面知识点拾遗,架构层面作者文章已经进行了详细的讲解。

1. 宏相关

2. UDID

常规的UUID+keychain的策略:

3. 内存管理权转移标记

4. DECORATOR PATTERN小解

decorator.jpg

适用场景:

5. 闭包的三元操作

fail?fail(CTResponse):nil

6. 封装一个统一的空值处理

#import "NSObject+AXNetworkingMethods.h"
@implementation NSObject (AXNetworkingMethods)

- (id)CT_defaultValue:(id)defaultData
{
    if (![defaultData isKindOfClass:[self class]]) {
        return defaultData;
    }
    
    if ([self CT_isEmptyObject]) {
        return defaultData;
    }
    
    return self;
}

- (BOOL)CT_isEmptyObject
{
    if ([self isEqual:[NSNull null]]) {
        return YES;
    }
    
    if ([self isKindOfClass:[NSString class]]) {
        if ([(NSString *)self length] == 0) {
            return YES;
        }
    }
    
    if ([self isKindOfClass:[NSArray class]]) {
        if ([(NSArray *)self count] == 0) {
            return YES;
        }
    }
    
    if ([self isKindOfClass:[NSDictionary class]]) {
        if ([(NSDictionary *)self count] == 0) {
            return YES;
        }
    }
    
    return NO;
}

@end

如果要是Swift的话其实就不用这么搞啦_

optionalVarA ?? "为空的时候我就派上用场啦"
上一篇下一篇

猜你喜欢

热点阅读