LoginSignup
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-17

 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の各問い合わせ関連の処理を裏から支えている。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1