나는 중첩 된 NSArray 문자열을 가진 Iphone 앱을 가지고있다. NSArray는 3 단계로 깊게 진행되며 가장 깊은 단계에는 총 약 15,000 개의 문자열이 있습니다. 대다수의 문자열은 20 자 미만입니다. 가끔씩 내 앱이 잠시 멈추고 5 ~ 25 초 후 다시 시작됩니다. 이것은 분명히 받아 들일 수 없다. 문자열을 2,000 개만 사용하여 응용 프로그램을 실행하면 중단이 훨씬 더 희박 해집니다. 그래서 큰 NSArray가 문제를 일으키는 것이 확실합니다.iphone large NSArray string performance woes
더 효과적인 대체 데이터 구조는 무엇입니까? 필요한 것은 앱이 시작될 때 파일에서 배열을 빠르게 읽은 다음 배열에서 무작위로 문자열에 액세스 할 수 있어야합니다. [실제로는 그것보다 조금 복잡합니다. 배열의 사전 결정된 하위 집합에서 임의의 문자열을 가져올 수 있어야합니다. 프로그램에서 임의의 문자열을 한 번에 한 번씩 가져올 수 있습니다.
덧붙여서 NSArray는 현재 싱글 톤 클래스에 저장되어 있습니다. 다른 데이터 구조 (트라이)이 마음에 와서 않습니다
전화가 끊어진 원인을 조사해야합니다. 이 물건들을 어떻게 요구하고 있습니까? 스트레이트 인덱싱 ('objectAtIndex :')이 세 번 있으면 20 초 동안 대기해야 할 이유가 없습니다. –
제 문제 중 일부는 도구를 실제로 이해하지 못한다는 것입니다. 나는 상어와 함께 프로파일을 만들었고 내 CPU의 90 % 이상이 PID # 0에 의해 사용되고 있다고 말했다. 그러나 나는 PID # 0이 무엇인지 전혀 모른다. –