gpt4 book ai didi

ios - Objective-C 中的类继承和自定义 ^block 执行

转载 作者:行者123 更新时间:2023-11-28 20:08:49 24 4
gpt4 key购买 nike

我有一个应用程序,我在其中调用网络服务来检索具有给定 ID 的 JSON 对象。无论我在哪个类(class),获取对象的方法在系统上都是相同的,但成功 block 会有所不同(id est,处理部分)——例如使用 AFNetworking。

我正在寻找正确的方法来仅实现 setter/getter 部分一次,但能够自定义处理。

下面这段代码是一个好的方法吗:

   -(void)getObjectWithId:(NSString*)id_{

NSString *ns1 = [NSString stringWithFormat:@"%@%@%@",HOSTNAME,API_DETAIL,id_];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:ns1]];

AFJSONRequestOperation *operation =[AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {


//Here I want to do different processing task accordingly inheritance level // current class

DLog(@"Response : %@ \n Request : %@",response,request);

[self processObject:JSON];


} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {

//Do failure stuff

}];

[operation start];

}

然后:

-(void)processObject:(id)JSON{


//Customize according to current class

}

因此,所有子类都将继承getObjectWithId,并拥有自己的processObject实现

我还应该考虑什么?是正确的方法吗?

最佳答案

您的选项会起作用,但将代码放在父类(super class)中是有限制的。如果限制适合您,那么继续吧。

另一种方法是创建一个辅助方法或管理器类来托管 getObjectWithId: 方法,但要提供 2 个参数,其中第二个参数是一个将 JSON 作为参数的 block 。通过这种方式,该方法包含所有可重用代码,并且该 block 允许与原始 AFNetworking API 相同的任意使用。

请注意,“正确的方法”是适合您的情况的任何方法,也是可以理解和维护的...

关于ios - Objective-C 中的类继承和自定义 ^block 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21061335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com