Parseをバックエンド サービスとして使用するために、AFIncrementalStore ですべてをセットアップしました。このようなサービスを使用すると、API リクエストのカウントが重要になります。たとえば、1 か月あたり 100 万リクエストを超えると (成功した指標ではありますが!)、ある程度の請求が発生する可能性があります。これは通常問題にはなりませんが、次のメソッドにブレークポイントを設定すると、次のようになりますAFHTTPClient
。
- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation;
特定のオブジェクトに対する要求が 3 回発生することがわかりました。必要なのは 1 回だけです。
$1 = 0x0b9afe30 https://api.parse.com/1/classes/Poem/cUpTflj0j8
// ...
$8 = 0x099e0a30 https://api.parse.com/1/classes/Poem/cUpTflj0j8
...
$18 = 0x0bb6d530 https://api.parse.com/1/classes/Poem/cUpTflj0j8
さまざまなメモリ アドレスが から取得されAFHTTPRequestOperation
ていることに注意してください。プロパティを出力して、各リクエストの (URL の末尾にあるランダムな文字列)request.URL
を調べています。objectId
2日間のデバッグと調査の後で、私は の仕組みに十分に慣れていないNSIncrementalStore
か、これを理解することができません。AFIncrementalStore
意図的かどうかにかかわらず、これを引き起こしている可能性のあるものについての考えを聞きたいです.
NSFetchedResultsController
をと一緒に使用していることを付け加えるかもしれませんUITableView
。テーブルビューのデータ ソースに対するオブジェクトの最初のリクエストのスタック トレースを追跡しました。他の 2 つの要求は、 の内部メソッドにまでさかのぼりますAFIncrementalStore
。
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ...
NSManagedObject *poem = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [poem valueForKey:@"title"]; // traced back to here
// ...
}