0

これは今日どのように達成されていますか?

私はあなたがretainでそれをしていたことを知っています:

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

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

しかし、retainを使用しなくなったので、どうしますか?

現在、送信しているオブジェクトマネージャーが2つありますが、応答は1つしかありません。リクエストの1つがもう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

私はそれを考え出した。同じオブジェクトローダーでリクエストを行っていました。

回答と説明はここにあります:Restkitの2番目のリクエストでオブジェクトがロードされない

于 2012-11-19T03:42:08.413 に答える