0

现在这是如何实现的?

我知道你曾经用保留来做到这一点:

RKObjectManager *flickrManager = 
[RKObjectManager objectManagerWithBaseURL:flickrBaseUrl]; // <-- shared singleton

RKObjectManager *foursquareManager = 
[[RKObjectManager objectManagerWithBaseURL:foursquareBaseUrl] retain]; // <-- you must retain every other instance

但是既然你不再使用retain了,你会怎么做呢?

目前,我有 2 个要发送的对象管理器,但我只收到 1 个响应。我猜其中一个请求正在取消另一个请求。

更新

RKURL *baseURL = [RKURL URLWithBaseURLString:@"http://iphone.meer.li"];
RKObjectManager *designObjectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];
//...Mapping design here...
RKURL *URL = [RKURL URLWithBaseURL:[designObjectManager baseURL] resourcePath:[NSString stringWithFormat: @"/%@.json", subUrl]];
[designObjectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"%@", [URL resourcePath]] delegate:self];

RKObjectManager *designerObjectManager = [RKObjectManager sharedManager];     
RKObjectMapping *designerMapping = [RKObjectMapping mappingForClass:[DesignerData class] ];
//...Mapping designer here...

RKURL *URL = [RKURL URLWithBaseURL:[designerObjectManager baseURL] resourcePath:[NSString stringWithFormat: @"/%@.json", subUrl]];
[designerObjectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"%@", [URL resourcePath]] delegate:self];

所以这是我真正的代码。我不明白为什么它会失败,因为对象管理器应该保留在 ARC 中。

有什么建议么?

4

3 回答 3

1

你不需要使用

RKObjectManager *designerObjectManager = [RKObjectManager sharedManager]; 

不再。

请参阅 RestKit Wiki中的“您创建的第一个对象管理器将是默认情况下使用的共享单例 RestKit。但是通过创建其他对象管理器,您可以根据需要从它们的 BaseURL 中提取,只需确保保留这些新管理器” 。

于 2012-11-18T22:32:40.733 回答
0

您的 designObjectManager 在方法的本地范围内(从您发送请求的位置)。一旦范围结束,它就会由 ARC 发布。您可以将 designObjectManager 作为类或属性的实例变量。

于 2012-11-18T10:31:09.433 回答
0

我想到了。我在同一个对象加载器上发出请求。

答案和解释可以在这里找到:Objects not loading on second request in Restkit

于 2012-11-19T03:42:08.413 回答