码迷,mamicode.com
首页 > 其他好文 > 详细

关于继承与类别的问题

时间:2017-08-16 19:11:02      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:home   request   func   cti   网络   写入   tin   ora   sdi   

今天遇到一个问题,就是我在定义接口时

首先父类

#import "ApiNetWork.h"

 

#define TimeOutSecs  30.0

 

@implementation ApiNetWork

 

+(id)instance

{

    static dispatch_once_t onceToken = 0;

    __strong static ApiNetWork *instance = nil;

    

    _dispatch_once(&onceToken, ^{

        instance = [[self alloc] init];

    });

    

    return instance;

}

 

 

- (id)init {

    self = [super init];

    if (self) {

        _manager = [AFHTTPSessionManager manager];

        _manager.requestSerializer = [AFHTTPRequestSerializer serializer];

        _manager.responseSerializer = [AFHTTPResponseSerializer serializer];

        [_manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];

        _manager.requestSerializer.timeoutInterval = TimeOutSecs;// seconds of timeout

        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];

    }

    return self;

}

 

- (void)httpGetFunc:(NSDictionary *)parameters

                URL:(NSString *)url

            success:(void (^)(id result))success

            failure:(void (^)(NSError *error))failure;

{

    [_manager GET:url parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        success(responseObject);

 

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        failure(error);

    }];

}

 

 

- (void)httpPostFunc:(NSDictionary *)parameters

                 URL:(NSString *)url

             success:(void (^)(id result))success

             failure:(void (^)(NSError *error))failure

{

    [_manager POST:url parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

       success(responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

       failure(error);

    }];

}

@end

 

然后我又根据项目模块,分别定义了ApiNetWork+Home和ApiNetWork+appInit,然后分别将各自模块的接口写入对应的类中,然后发现问题了,就是接口出现了紊乱,因为父类使用了单例,然后子类只要调用,然后类名就一直是这个子类了,所以就导致其他子类接口错误,但是这个时候就可以换成类别。这样就不会出现问题了。只要在使用的类中,导入类别文件就可以了

#import "ApiNetWork.h"

 

//基础URL定义-------------------------------------------

#define HOME_BANNER_URL            @"api/v2/cms/mobileBanners"

#define HOME_INTRO_URL             @""

#define HOME_INVESTMENT_URL        @""

#define HOME_INVEST_URL            @""

 

 

@interface ApiNetWork(Home)

 

 

//完整URL(拼装 + 参数等)----------------------------------

 

//首页banner信息

-(NSString *)apiHomeBanner;

//首页公告

-(NSString *)apiHomeIntro;

//首页用户资金信息

-(NSString *)apiHomeInvestment;

//首页理财列表

-(NSString *)apiHomeInvest;

 

 

//api网络请求方法------------------------------------------

- (void)getHomeBanners:(NSDictionary *)parameters

                   URL:(NSString *)url

               success:(void (^)(NSMutableArray *bannersMuArray))success

               failure:(void (^)(NSError *error))failure;

 

 

@end

 

#import "ApiNetWork.h"

#import "AcitivityImageModel.h"

 

//基础URL定义-------------------------------------------

#define ACITIVITY_IMAGE_URL  @"api/v2/cms/getAppopenimage"

 

@interface ApiNetWork(AppInit)

 

//完整URL(拼装 + 参数等)----------------------------------

 

//启动页图片信息

-(NSString *)apiAcitivityImage;

 

 

//api网络请求方法------------------------------------------

- (void)getAcitivityImage:(NSDictionary *)parameters

                      URL:(NSString *)url

                  success:(void (^)(AcitivityImageModel *responseObject))success

                  failure:(void (^)(NSError *error))failure;

 

@end

 

关于继承与类别的问题

标签:home   request   func   cti   网络   写入   tin   ora   sdi   

原文地址:http://www.cnblogs.com/huiyi-520/p/7374909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!