Objective-Cのランタイム時の挙動を知っている人には常識ですが、
同じスーパークラスやプロトコルを継承していないクラス間でも、
メソッドさえ実装していればとりあえず動きます。
例えば以下のようなALAssetGroupそのまんまのメソッドを実装したLocalAssetGroupというクラスを作ってALAssetGroupにキャストすればそのまんま動きます。JavaやC#のような静的言語と違って。
なんで、別のクラス同士を混在させたい場合、共通化するアダプタークラスみたいなのは用意する必要は有りません。
例
@interface LocalAssetGroup : NSObject
+ (NSInteger)numberOfAssets;
- (id)valueForProperty:(NSString *)property;
- (CGImageRef)posterImage;
- (void)setAssetsFilter:(ALAssetsFilter *)filter;
- (NSInteger)numberOfAssets;
- (void)enumerateAssetsWithOptions:(NSEnumerationOptions)options usingBlock:(AssetGroupEnumerationResultsBlock)enumerationBlock;
- (void)enumerateAssetsUsingBlock:(AssetGroupEnumerationResultsBlock)enumerationBlock;
@end