• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

目标C中的类继承和自定义^块执行C

IOS 来源:Romain Dorange 7次浏览

我有一个应用程序,我在其中调用webservice以检索具有给定ID的JSON对象。 无论我在什么类中,获取对象的方法都是系统相同的,但成功块将会不同(id est,处理部分) – 例如使用AFNetworking。目标C中的类继承和自定义^块执行C

我正在寻找正确的方式来实现只有一次的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

我还应该考虑什么?是一种正确的方式?

===========解决方案如下:

您的选择将起作用,但它限制将代码放在超类中。如果限制适合您,那么继续。

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

注意,“有道”是什么你的工作情况,也是理解和维护……


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)