2009-08-05 8 views
0

TabBar 컨트롤러와 navBar 컨트롤러가있는 앱이 있습니다. 그것은 ~ 8 ​​전망 (다양한 웹, 테이블, 표준, 메일, 주소 등), 일부는 테이블 뷰를 만들기 위해 XCode를 사용하여 만든 IB를 사용하여 만들었습니다. 나는 메모리 누수 테스터를 돌렸고 메모리 누수가 없다. 뷰간에 언제든지 충돌 할 수 있습니다. 뷰간에 앞뒤로 뒤집어서 일부 기능을 사용하면 앱이 닫힙니다.멀티 뷰 앱이 충돌합니다.

1) 메모리가 부족하거나 2)보기를 올바르게 해제하지 않아 앱이 닫히는 것으로 생각됩니다. 응용 프로그램이 간단하므로 메모리가 부족할 수 있는지 알 수 없으며 개체를 올바르게 릴리스 할 수있는 최선의 방법으로 코드를 검토했습니다.

그래서 여기가 질문에 대한 내 목록입니다

1) 무엇을 어떻게 사용하는 다른 디버깅 도구의 일부 (또는 내가 사용을 찾고해야 어떤 도구/파일 말해)? 문제의 근원을 좁히고 싶습니다.

2) 이러한보기를 해제하는 가장 좋은 방법은 무엇입니까? 방법?

3) 일반 앱에서 사용하는 메모리 용량은 어느 정도입니까? 내가 머물러야 할 번호가 있나? 시뮬레이터에서 어떻게 확인합니까? 할당 도구?

저를 도울 수있는 사과 문서 또는 기타 stackoverflow 질문을 가르쳐 주시기 바랍니다.

업데이트 : 사용자 정의 셀이있는 테이블보기가있는보기가 하나만 사용되는 것으로 나타납니다 ... 셀이 plist 파일에서 채워집니다 ... 며칠 전이보기가 정상적으로 작동했습니다. 일부 셀에는 plist 파일의 데이터가 없습니다 ... 적절한 데이터를 저장하지 않으면 plist 파일 문제 일 수 있습니다. 나는 계속 노력할 것이다.

업데이트 # 2 :이 특정 tableView가 잘 작동했을 때 (이전 3.0) 제대로 작동하는지 추측 할 때 이전 버전의 파일로 돌아갔습니다.이 버전의 앱을 사용하여 시뮬레이터를 3.0으로 변경합니다. 이 테이블 뷰에 빵 충돌이 나타납니다. 지금까지 도움을 주셔서 감사합니다, 나는 아래에 언급 한 일을 시도하고 내가 찾은 것을 알려주지. 2.2.1에서 3.0으로 이동하는 customView 셀이 왜 부숴지기 시작하는지에 대한 몇 가지 팁이 있다면, 나는 그것들을 취할 것입니다. 어디든 갈 수 없다면 곧 코드를 게시 할 것입니다. BTW, 나는 위의 mis-spoke, 나는 그것이 시뮬레이터에서 충돌하지 않는다고 생각했다. .. 나는 틀렸다.

해결 방법 : 문제 해결 팁을 보내 주셔서 감사합니다. 해결 방법은 간단했지만 2.2.1에서는 충돌이 발생하지 않은 것은 이상합니다. 문제가 발생하기 전에 오랜 시간 충돌이 발생 했어야했는데, 제 커스텀 셀에서 여러 번 ...

답변

0

1 세대 및 2 세대 휴대 전화에서는 실제 메모리 사용량이 약 20MG를 넘기를 원하지 않습니다. 일단 넘어 가면 발판에서 살해 당할 위험이 있습니다.

잠재적 인 문제가 될 수있는 자동 회수 된 객체를 많이 사용하는 경우 autorelease 풀이 메모리보다 훨씬 오래 기다릴 수 있기 때문에 필자가 보아온 가장 큰 범죄자 중 하나는 자동 복구 된 메모리입니다. 가능한 경우 더 명시적인 유지/릴리스를 수행하고 로컬 자동 릴리스 풀을 수동으로 작성하고 많은 자동 릴리스 된 오브젝트로보다 집중적 인 조작을 수행 한 후이를 해제함으로써이를 향상시킬 수 있습니다.

지금까지 발견 한 실제 메모리 사용량을 추적하는 가장 효과적인 방법은 테스트 전화로 디버그 빌드를 실행하고 Activity Monitor로 실행하는 것입니다. 그러면 앱에서 얼마나 많은 메모리를 차지하고 유지하는지 명확히 알 수 있습니다. 뿐만 아니라 당신이 충돌 할 때 얼마나 사용되고 있는지.

실행 메뉴 -> 성능 도구로 시작 -> 활동 모니터에서 Xcode의 활동 모니터로 실행할 수 있습니다.

다른 유용한 도구로는 코드베이스에 대해 실행할 수있는 CLang 정적 분석기가 있으며 매우 유용한 메모리 관리 정보를 제공 할 수 있습니다. 언급 한 바와 같이 here.

0

내가 시도하려는 한 가지 방법은 didReceiveMemoryWarning 메소드에 디버그 메시지를 넣는 것입니다. 그렇게하면 에 메모리가 부족한이 발생하면 최소한 경고 메시지가 표시됩니다.

관련 문제