2011-11-10 3 views
0

최근 Xcode를 사용하여 C 프로그래밍에서 iPhone 개발로 마이그레이션했습니다. IDE가 사소한 일을 많이 숨기고있는 것처럼 보였고 후드에서 무슨 일이 일어나고 있는지 궁금합니다..ipa가 시작될 때 응용 프로그램 항목 및 호출 순서

내 프로젝트에 main.m이라는 파일이 있습니다. 이 함수 안에서 UIApplicationMain(argc, argv, nil, nil);이 호출됩니다. 제 질문은 UIApplicationMain이 완료 할 작업은 무엇입니까? 이 함수를 실행 추적 할 수 있습니까?

힌트를 보내 주시면 감사하겠습니다.

감사합니다.

답변

1

아이폰 OS 코코아를 터치 앱은 엄격하게 순차적 인 절차 코드가 아닌 이벤트 중심의 패러다임을 사용합니다.

UIApplicationMain()은 OS 및 Objective C 런타임이 일을 설정 (plist'ed defaults, main nib, run loop 등)하도록 지시 한 다음 기본 실행 루프가 앱 내의 메소드로 디스패치되기 시작하도록합니다. 모든 (초기화 /로드/이벤트 처리) 메소드의 시작 부분에 중단 점을 두어 OS가 먼저 호출을 시작하는지 확인하십시오.

OS는 사용자가 들어갈 수없는 모든 일을 처리합니다. 애플리케이션 내에서 메소드를 호출 할 준비가 될 때까지 기다려야합니다.

+0

그렇다면 ipa 디버깅에 대한 조언은 무엇입니까? 나는 거의 C 프로그래밍과 매우 다른 미친 방향으로 나아 간다. :) –

+0

주문 상황 (대부분 델리게이트 메소드)을 알아낼 때까지 중단 점이 많이 호출된다. 아마 Debug에서 NSLogs가 많이 생깁니다. – hotpaw2

1

UIApplicationMain은 Cocoa 앱의 진입 점입니다. 응용 프로그램의 기본 응용 프로그램 클래스와 해당 대리자를 설정하고 이벤트 루프를 실행하기 시작합니다. 그것은 돌아 오지 않는다. the documentation 가입일

:

이 함수는 주 클래스의 프로그램 객체를 인스턴스화하고 지정된 클래스 로부터 위임 (있는 경우)를 인스턴스화하고 애플리케이션의 대리인 설정한다. 또한 응용 프로그램의 실행 루프를 포함하여 이벤트 루프를 설정하고 이벤트를 처리하기 시작합니다. 응용 프로그램의 Info.plist 파일에로드 할 주 nib 파일을 지정하는 경우 NSMainNibFile 키와 유효한 nib 파일 이름을 포함하여 해당 nib 파일을로드합니다.

계시되지 않는 이진 명령어의 전체 스튜가 있기 때문에 실제로 특정 기능의 보루에 들어가기를 원하지는 않습니다. 그러나 그것을 생각하는 방법은 전체 앱을위한 "컨테이너"기능입니다. 설정 작업을 마치면 실행 루프에서 이벤트 처리를 시작하고 적절한 경우 코드를 호출합니다. 메인 스레드의 모든 앱 코드에 대한 콜 스택의 맨 아래에 있습니다.

당신에게 당신의 자신의 코드에 중단 점을 넣어, 그들은 호출되는 방법을 위치에 대한 몇 가지 힌트를 제공해야하는 앱의 수명주기에 대한 자세한이 페이지에 큰 다이어그램을 체크 아웃 : http://www.codeproject.com/KB/iPhone/ApplicationLifeCycle.aspx

+0

빠른 응답을 보내 주셔서 감사합니다. :) –

관련 문제