배치 크기가 20 인 NSFetchedResultsController가 모든 객체를 즉시 폴트 (즉 메모리에로드)하는 이유에 대해 지난 며칠 동안 수수께끼를 풀려고 노력했습니다. 가져 오기가 완료되면 요청이 ~ 20 초가 걸립니다.코어 데이터 객체를 사용하는 동적 UITableView 높이
내 heightForRowAtIndexPath에서 높이가 각 가져온 개체의 NSString 속성 길이를 기반으로했기 때문에 테이블을 다시로드 할 때 테이블에 2000 개의 행이 있으면 높이가 계산됩니다 처음에는 모든 행에 대해, 그리고 객체의 텍스트 속성에 액세스 했으므로 매우 초기에 객체가 20 개의 객체 (20 개 크기의 배치)로 잘못되어서 영원히 걸릴 수 있습니다. (나는 행 높이가 모두 처음에 계산되었다는 것을 몰랐다.)
배치 크기가 20 인 결과 컨트롤러를 가져 오지만 행 높이는 객체의 텍스트 속성을 기반으로합니다. 객체의 액세스가 시도되면 객체가되지 않습니다. 더 이상 오류가 있지만 실제로 메모리에로드 된 경우 높이를 계산할 때 해결 방법은 무엇입니까?
내 옵션에는 어떤 것이 있습니까?
개체가 오류인지 확인하는 경우 오류가 발생합니다. 오류 일 경우 임의의 크기를 반환하고, 그렇지 않으면 문자열을 가져 와서 계산합니까? 셀을 볼 때 메서드가 다시 호출됩니까? 나는 여기서 추측하고있다. 그 또는 게으른로드 구현 (즉, 새로운 행이 스크롤로 추가됩니다) 유일한 옵션 인 것 같습니다. – jrturton
heightForRow는 리로드 시작시에만 호출되며 셀이 나타날 때마다 호출되지 않습니다 (cellForRow와 같이). 그게 내가 생각한거야.하지만 그게 효과가있을 것이라고 생각하지 않아. – Snowman
너무 쉽게 들릴 거라 생각 했어. – jrturton