나는 함수를 동적으로 호출 할 수 있다는 것을 알고 있지만 정적으로 함수 (및 ObjC 객체의 메서드)가 호출되지 않는 것을 결정하는 방법이 있습니까?Xcode4에서 사용하지 않는 함수를 결정하는 방법이 있습니까?
5
A
답변
2
누군가가 정적 분석 도구를 만들려고 합리적인 것인지 확신 할 수 없습니다. 매우 복잡 할 수 있습니다. 아마도 매우 복잡한 것이고, 전화하지 마라. 예. 클래스에서 작성한 함수이며 호출이 없습니다. 코코아와 상호 작용하는 모든 것들 ... 문제는 서로 다른 환경에서 콜 될 수 있다는 것입니다.
어떤 경우 든 실제로 관심을 가져야 할 것은 런타임 코드 범위입니다.이 방법을 사용하면 실제 사용되는 코드가 표시되므로 작은 하위 집합이됩니다.
2
objc_cover 잠재적으로 사용하지 않는 Objective-C 방법을 찾아내는 데 도움이됩니다.
0
WARNING_CFLAGS
목록에 -Wunused-function
을 추가하십시오.
또한 주소로 찍은 기능을 참조로 간주합니다 (정상적인 사용에 이상적). 최적의 적용 범위를 위해 gcc와 clang으로 프로그램을 컴파일하십시오.
이 플래그는 모든 경우 (예 : 내 보낸 함수)를 다루지는 않으며 내부적으로 연결된 함수에 주로 초점을 둡니다. strip
및 nm
을 사용하여 diffing하면 외부 기호를 분리하는 데 도움이 될 수 있습니다.이 정확한 프로세스를 위해 좋은 도구를 모르겠습니다.
사용하지 않는 objc 메서드를 찾으려면 질문의 단어를 다시 말해야합니다.
관련 문제
- 1. 푸리에 함수를 사용하지 않는 언샵 마스크 코딩
- 2. 거리를 결정하는 효율적인 방법이 있습니까?
- 3. 루아 함수의 서명을 결정하는 방법이 있습니까?
- 4. 순수 가상 함수를 "삭제"하는 방법이 있습니까?
- 5. 국제화에 기본 resx 파일을 사용하지 않는 방법이 있습니까?
- 6. asp.net의 CultureInfo에서 텍스트 방향을 결정하는 방법이 있습니까?
- 7. .NET 스레드가 종료되는시기를 결정하는 방법이 있습니까?
- 8. 오디오 파일의 길이를 결정하는 방법이 있습니까
- 9. AppEngine Taskqueue : 대기열 깊이를 결정하는 방법이 있습니까?
- 10. PHP 함수를 iframe에로드하는 방법이 있습니까?
- 11. xcode4에서 보이지 않는 문자를 사용자 정의 할 수 있습니까?
- 12. JSONP를 사용하지 않는 이유가 있습니까?
- 13. CustomAttributes를 사용하지 않는 이유가 있습니까?
- 14. UINavigationController를 사용하지 않고 iOS에서보기를 변경하는 방법이 있습니까?
- 15. 코드 최적화 - 사용하지 않는 방법
- 16. sem_wait을 회전시키지 않는 방법이 있습니까?
- 17. 함수를 결정하는 데 if 문 문제가 발생했습니다.
- 18. RELEASE_SAFELY의 의미는 무엇이며 xcode4에서 작동하지 않는 이유는 무엇입니까?
- 19. 함수를 호출 한 클래스를 결정하는 방법
- 20. RubyMine에 webrick을 사용하지 말라고 말하는 방법이 있습니까?
- 21. JavaScript에서 다른 함수를 사용하여 함수를 끝내는 방법이 있습니까?
- 22. javascript에서 함수를 정의하는 이러한 방법이 있습니까?
- 23. Replace() 함수를 제외하고 다른 대체 방법이 있습니까?
- 24. MySQL 데이터베이스간에 함수를 복사하는 방법이 있습니까?
- 25. Java의 부모 클래스에서 함수를 호출하는 방법이 있습니까?
- 26. postgresql에서 oid로 함수를 호출하는 방법이 있습니까?
- 27. 사용하지 않는 휘발성 변수
- 28. 사용하지 않는 파일 삭제
- 29. UserControls를 사용하지 않는 성능상의 이유가 있습니까?
- 30. 프로그램 레지스트리 설정을 사용하지 않는 이유가 있습니까?
동의. 이는 특히 함수 포인터, 콜백 및 무거운 조건부 코드를 도입하기 시작할 때 어려운 문제입니다. 멈추는 문제 같아. – Luke
@ 루케 - 동의했다, 질문은 흥미 롭다 - 그것에 대해 생각하면 이것이 얼마나 어려울지를 깨달았다. 셀렉터와 메시지 포워딩도 사용합니다. 역동적 인 범위에 대한 코드를 계측 - 사소한 것은 아니지만 그렇게 할 수있는 방법을 훨씬 쉽게 이해할 수 있습니다. – iandotkelly
@ iandotkelly : 재미있는 아이디어, 역동적 인 행동. 작은 해킹이 떠오른다. 잠시 동안 프로파일 러를 통해 코드를 실행하고, 모든 함수 이름을 추출하고, TAGS 데이터베이스와 비교한다. 그것은 당신에게 약간의 아이디어를 주어야합니다. 이것은 물론 확률 론적으로 100 % 정확한 것은 아니지만 실제로 호출되는 많은 기능을 검사하지 않아도됩니다. – Arne