iOSは今では巨大なプラットホームでいろんなジャンルの色々なクラスがある。そこでクラス名の観点からそのクラスがどんな特徴、役割を持つのか調べてみた。
まずは、〜Request系クラス編。文字通り要求を表すクラス。とはいってもクラスの性格や役割は各々ので全く異なる。
NSURLRequest
言わずと知れた有名なクラス。文字通りURLをロードするための各種通信パラメータを持っている。通信パラメータを保持しているだけでこのクラス自身は送信処理をしない。
iOSとクラス設計に長けた人が考察すれば分かる通り、iOSでは様々な方法でHTTP通信できるためこいつに通信処理を持たすと責務超過でクラス自身が肥大化するから情報保持の責務に特化しているだと思う。後でパラメータを変更できるNSMutableURLRequestというのがある。
SLRequest
ソーシャルサービスへの送信パラメータを保持する。
TwitterやFacebook等、iOSで直接管理しているサービスのみ扱える。外に対しては抽象的なインタフェースを提供し、内部で各サービスに特化したパラメータに変換している。キャンセル不可能なコールバックベースの非同期通信インタフェースを持っており送信が可能。
NSURLRequestへの変換メソッドも用意しており、好きな方法で送信処理やパラメータの追加を行える。
SKRequest
IAPサービスの各種送信処理を行う。
こいつもNSURLRequstと違って送信処理も行え、キャンセルも行える。応答メッセージはSKReqeustDelegateプロトコルとその派生プロトコルで拾えるようになっている。
SKRequest自体は抽象クラスでサブクラスに商品情報の詳細を引っ張ってくるSKProductsRequestと、レシートの更新を行うSKReceiptRefreshRequestがある。それぞれのコンストラクターで送信パラメータを設定する。
NSFetchRequest
言わずとしれたCore Dataのクラスで、NSManagedObjectのフェッチを行うためのパラメータを保持している。
主にNSManagedObjectContextのexecuteFetchRequestメソッドの引数に指定して使う。
他にもNSFetchedResultControllerやNSFetchedPropertyDescriptionクラスのプロパティとして、Core Dataの各問い合わせ関連の処理を裏から支えている。
上記以外については調べしだい随時追加いこうと思います。