ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

iOSクラス探訪 〜Request系クラス編

 iOSは今では巨大なプラットホームでいろんなジャンルの色々なクラスがある。そこでクラス名の観点からそのクラスがどんな特徴、役割を持つのか調べてみた。

まずは、〜Request系クラス編。文字通り要求を表すクラス。とはいってもクラスの性格や役割は各々ので全く異なる。

NSURLRequest

言わずと知れた有名なクラス。文字通りURLをロードするための各種通信パラメータを持っている。通信パラメータを保持しているだけでこのクラス自身は送信処理をしない。

iOSとクラス設計に長けた人が考察すれば分かる通り、iOSでは様々な方法でHTTP通信できるためこいつに通信処理を持たすと責務超過でクラス自身が肥大化するから情報保持の責務に特化しているだと思う。後でパラメータを変更できるNSMutableURLRequestというのがある。

SLRequest

ソーシャルサービスへの送信パラメータを保持する。

TwitterFacebook等、iOSで直接管理しているサービスのみ扱える。外に対しては抽象的なインタフェースを提供し、内部で各サービスに特化したパラメータに変換している。キャンセル不可能なコールバックベースの非同期通信インタフェースを持っており送信が可能。

NSURLRequestへの変換メソッドも用意しており、好きな方法で送信処理やパラメータの追加を行える。

SKRequest

IAPサービスの各種送信処理を行う。

こいつもNSURLRequstと違って送信処理も行え、キャンセルも行える。応答メッセージはSKReqeustDelegateプロトコルとその派生プロトコルで拾えるようになっている。

SKRequest自体は抽象クラスでサブクラスに商品情報の詳細を引っ張ってくるSKProductsRequestと、レシートの更新を行うSKReceiptRefreshRequestがある。それぞれのコンストラクターで送信パラメータを設定する。

NSFetchRequest

言わずとしれたCore Dataのクラスで、NSManagedObjectのフェッチを行うためのパラメータを保持している。

主にNSManagedObjectContextのexecuteFetchRequestメソッドの引数に指定して使う。

他にもNSFetchedResultControllerやNSFetchedPropertyDescriptionクラスのプロパティとして、Core Dataの各問い合わせ関連の処理を裏から支えている。

上記以外については調べしだい随時追加いこうと思います。