リモートオブジェクトをローカルオブジェクトに自動的にマッピングするRestkitというiOSライブラリを使用しています。これを行うには、KVCパターンを使用してマッピングを作成し、そのマッピングをロードします。
それがどのように機能するかは理解していますが、一部の部分が特定の方法で実装されている理由がわかりません。たとえば、次のようにRKObjectMappingのインスタンスを作成するシングルトンパターンを使用します。
RKObjectMapping* articleMapping = [RKObjectMapping mappingForClass:[Article class]];
[articleMapping mapKeyPath:@"title" toAttribute:@"title"];
[articleMapping mapKeyPath:@"body" toAttribute:@"body"];
[articleMapping mapKeyPath:@"author" toAttribute:@"author"];
[articleMapping mapKeyPath:@"publication_date" toAttribute:@"publicationDate"];
ただし、実際に使用する場合は、次のように、クラスRKObjectManagerのsharedManagerを呼び出してマネージャーにアクセスします。
[[RKObjectManager sharedManager].mappingProvider setMapping:articleMapping
forKeyPath:@"articles"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/articles"
delegate:self];
私が理解していないのは、sharedManagerのようなクラスメソッド/変数を使用してクラスにアクセスするだけなのに、なぜクラスをarticleMappingとしてインスタンス化するのが面倒なのかということです。次のようなことをしてみませんか。
[RKObjectMapping initWithClass:[Article class]];
私は初心者なので、私が気付いていないこのパターンをとるのには十分な理由があると思います。なぜこれがこのように実装されるのかを知っているか理解している人はいますか?