关于继承与类别的问题

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

首先父类

#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

时间: 2024-10-15 14:55:41

关于继承与类别的问题的相关文章

继承与类别

继承应用:有多个类它们有一些公共属性时,可以声明一个父类,继承之.简化代码. 类别: 1,可用于分块编写代码. 2,拓展一些系统类.超级强大. 3,一些公共的方法,可提取到NSObject类别之中,由于所有的类都继承自NSObject,所以所有的类都会有此方法,可以简化代码.通用的,在父类中加类别,在所有子类中都会有类别中的方法. 共同点:都可以简化代码.类别可以作为继承的补充.

类别的作用?继承和类别在实现中有何区别

category 可以在不获悉,不改变源代码的情况下往里面添加新的方法,只能添加,但是不能添加属性,不能删除,并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级. 类别主要有三个作用: 1)将类的实现分散到多个不同的文件或者多个不同的框架中. 2)创建对私有方法的前向引用. 3)向对象添加非正式协议. 继承可以增加,修改或者删除方法,并且可以增加属性.

类别的作用?继承和类别在实现中有何区别?

category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改,并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级. 类别主要有3个作用: 1).将类的实现分散到多个不同文件或多个不同框架中. 2).创建对私有方法的前向引用. 3).向对象添加非正式协议. 继承可以增加,修改或者删除方法,并且可以增加属性. 原文地址:https://www.cnblogs.com/huangzs/p/8496106.html

多线程——继承Thread类别

详细java此前使用多线程,让我们来看看下面的问题. 什么是多线程 简单的理解成:cpu"同一时候"运行多个任务,这就是多线程. (究其本质,当涉及到进程和线程的概念.上面的说法也不太合适,只是.简单的理解成这样也不为过.) 多线程攻克了什么问题? 多线程通过充分利用cpu实现了提高计算机效率的问题. 使用了多线程,效率就一定会提高? 答案是否定的.在适当的情况下使用多线程,确实能提高效率,可是假设滥用多线程,有时候效率反而会减少.那么,什么情况下使用多线程会提高效率就成为了一个至关重

类别、延展、继承

Objective-C中继承和类别的比较:category&Inherit 分享类型:应用开发相关 在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承.1.继承Inherit这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性.对于以下情况,无法使用类别,必须使用继承.1)新扩展的方法与原方法同名,但是还需要使用父类的实现.因为使用类别,会覆盖原类的实现,无法访问到原来的方法.2)扩展类的属性,这个类别无法做到.示例代码: ? 1 2 3 4 5 6 7 8

继承和类设计

========================== ========================== oc是一门面向对象的语言,面向对象编程有三大特性:封装.继承.多态 一.封装 [注]封装就是把某些解决一些问题的代码进行模块化,对外部暴露一个接口.我们都称为封装了一个方法: [优点] 1.封装可以增强代码的复用度. 2.封装可以有效提高开发速度. 二.继承 子类拥有了父类的方法和属性的情况,我们称为继承: A:B(读作:A类继承B类,也就A类拥有了B类的方法和属性) [优点] 1.不用书

1225Delegate 代理委托 +类别Category

1.协议  代理模式 两个对象之间如何传递数据 同一时间只完成一件事情 一般把协议写在代理中 接受的类型用id并且服从协议(@property(nonatomic ,assign)id<agentDelegate>delegate 一定要确保对象实现了方法 2.Category 类别 1.什么是类别 在已有类的基础之上无需子类化,直接给类添加一些方法 a.继承与类别的区别 继承不仅可以添加一些方法,还可以添加一些属性 类别只能添加方法 b.在使用的时候继承必须创建一个对象再去调用方法,使用类别

类别,类扩展

1.类别是对方法的扩展,不能添加成员变量.继承可以在原来父类的成员变量的基础上,添加新的成员变量      2.类别只能添加新的方法,不能修改和删除原来的方法.继承可以增加.修改和删除方法.      3.类别不提倡对原有的方法进行重载.继承可以通过使用super对原来方法进行重载.      4.类别可以被继承,如果一个父类中定义了类别,那么其子类中也会继承此类别.

对继承的再次理解

一说到继承,我第一反应是:非技术性的例子,孩子继承父亲的表演能力,孩子另外也有多余的音乐能力.因为这样的第一反应,当我看到:评论继承新闻时,就有点不容易接受了,为什么评论继承新闻啊?继承关系不应该是同类的吗,像孩子继承父母,鸟继承动物(新闻继承新闻类别,这样的继承关系时,相当于鸟继承动物,还容易接受.),怎么来了一个完全不同的事物,呈现继承关系呢?    牛腩中讲"评论属于某一个新闻,所以评论继承新闻."为什么? 从继承的概念做起,继承指的是一个类(称为子类.子接口)继承另外的一个类(