0

AFIncrementalStore를 사용하여 모든 설정을 완료했으며 Parse을 백엔드 서비스로 사용합니다. 이러한 서비스를 사용하면 월간 1MM 요청을 초과하는 것처럼 API 요청을 중요하게 계산할 수 있습니다 (성공적인 측정 항목 임에도 불구하고). 괜찮은 청구서가 발생할 수 있습니다. 이것은 보통 문제가 될 수 있지만 것 제가 AFHTTPClient에서 다음과 같은 방법에 중단 점을 세우면 내가보고 있어요 :3 NSFetchedResultsController를 사용하여 AFIncrementalStore가있는 객체 당 요청

- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation; 

내가 특정 객체에 대한 요청이 3 번 발생하는 것을 발견 한 번만 필요합니다. 서로 다른 메모리 주소가 AFHTTPRequestOperation에서 온 것을

$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 

주, 나는 각 요청의 objectId (URL의 끝에 임의의 문자열)을 검사 할 수있는 request.URL 속성을 인쇄하고 있습니다.

이제 디버깅 및 검사 2 일 후에 NSIncrementalStore 또는 AFIncrementalStore의 동작을 충분히 이해하지 못했습니다. 의도적이든 아니든이 문제의 원인이 될 수있는 것에 대한 의견을 듣고 싶습니다.

나는 NSFetchedResultsControllerUITableView을 사용하고 있다고 덧붙일 수 있습니다. 개체의 첫 번째 요청에 대한 스택 추적을 따라 내 tableview의 데이터 원본을 추적했습니다. 나머지 두 요청은 AFIncrementalStore 내부 메소드로 추적됩니다.

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // ... 
    NSManagedObject *poem = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    cell.textLabel.text = [poem valueForKey:@"title"]; // traced back to here 
    // ... 
} 

답변

1

옵션이 너무 같은 NSURLCache을 설정 할 수 있습니다

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:8 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil]; 

[NSURLCache setSharedURLCache:URLCache]; 

이 8 메가 바이트 RAM 20 MB 디스크 캐시를 사용하여 URLCache 설정해야합니다.

와이어에서 여전히 많은 요청이 있는지 확인하려면 wireshark 또는 cocoapacketanalyser과 같은 도구를 사용하십시오.