ios函数 二、三次封装和block作用

ios函数 二、三次封装和block作用


ios 中对常使用的模块或者公共模块做二次,三次封装,对已知api做二次封装,以更便于自己在项目中使用。

以下为例子:


+ (NSURLSessionDataTask *)requestDictionary:(void (^)(NSDictionary *, NSError *))block
                                    withURL:(NSString *)url
                                  parameter:(NSDictionary *)parameter
{
    //NSLog(@"url====%@",url);
    
    return [[SCAppAPIClient sessionManager] GET:url
                                     parameters:parameter
                                        success:^(NSURLSessionDataTask *task, id responseObject) {
                                            NSString *successString = [[NSJSONSerialization JSONObjectWithData:responseObject
                                                                                                       options:kNilOptions
                                                                                                         error:NULL] objectForKey:@"Value"];
                                            NSDictionary *resultDict;
                                            if ([successString isEqualToString:@"success"]) {
                                                resultDict = [[[NSJSONSerialization JSONObjectWithData:responseObject
                                                                                                             options:kNilOptions
                                                                                                               error:NULL] valueForKeyPath:@"SuccessInfo"] objectAtIndex:0];
                                            }
                                            if ([successString isEqualToString:@"failed"]) {
                                                resultDict = [NSJSONSerialization JSONObjectWithData:responseObject
                                                                                               options:kNilOptions
                                                                                                 error:NULL];
                                            }
                                            if (block) {
                                                block([NSDictionary dictionaryWithDictionary:resultDict], nil);
                                            }
                                        } failure:^(NSURLSessionDataTask *task, NSError *error) {
                                            if (block) {
                                                block([NSDictionary dictionary], error);
                                            }
                                        }];
}


SCAppAPIClient sessionManager


获取到的是一个单利返回值,GET 后面一个方法为 api自带方法;

单利为

#import "SCAppAPIClient.h"
#import "Macros.h"


@implementation SCAppAPIClient

+ (instancetype)sessionManager
{
    static SCAppAPIClient *_sessionManager = nil;
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{
        _sessionManager = [[self alloc] initWithBaseURL:[NSURL URLWithString:OFFICIAL_URL]];
        _sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
        _sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
    });
    
    return _sessionManager;
}
@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值