2012-01-14 1 views
0

내 프로젝트에서 XIB (Nib) 파일을 삭제하고 싶습니다. 그러나 나는 내 AppDelegate 클래스의 메소드 didFinishLaunchingWithOptions가 호출조차되지 않는다는 것을 알고 있습니다. 나는 주요없이 할 수있는 방법을 ...프로그래밍 방식으로 창 및보기를 작성하여 iOS 앱을 설정하는 방법은 무엇입니까?

+[AppDelegate registerForSystemEvents]: unrecognized selector sent to class 

그래서 :

<key>NSPrincipalClass</key> 
<string>AppDelegate</string> 

이 단지 리드를 오류로 :

나는과 같이 내 응용 프로그램의 주요 PLIST에 주요 클래스를 설정하려 클래스를 실행하고 AppDelegate 클래스를 실행 시키면됩니까?

감사합니다.

+0

를 나는이 대답 하반기 기계가 그것을 커버 : http://stackoverflow.com/questions/7535605/where-is- 당신의 application-delegate-set-who-who-initialize-its-window-and-viewco/7535776 # 7535776 – bryanmac

+0

또한 .xib에 대한 참조를 into.plist에서 삭제해야합니다. – bryanmac

+0

@ "AppDelegate"는 허약합니다. 클래스 이름을 바꾸면 깨질 것입니다.이 문제를 방지하려면 내 대답에 설명 된 NSStringFromClass() 접근 방식을 사용하십시오. –

답변

1

단지 펜촉을 만들지 않습니다 "빈 응용 프로그램"을 선택 ... 적절한 프로젝트 템플릿으로 시작되는 가장 쉬운 일이 있지만, 설치 다음과 같은 중요한 라인 main.m 제대로 않습니다

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

registerForSystemEvents는 UIApplication의 private 메서드입니다. UIApplicationDelegate를 따르는 응답자가 아니라 주 클래스가 UIApplication 또는 하위 클래스 여야하므로 의미가 있습니다.

위의 UIApplicationMain() 호출은 사용자의 AppDelegate 클래스에 대한 사용자 클래스를 UIApplication으로, 위임을 사용자에게 설정합니다.

하지만 제가 말했던 것처럼 - 적절한 프로젝트 템플릿을 사용하면 간단하게 생활 할 수 있습니다.

0

모든 C 기반 프로그램에는 모든 프로그램의 시작 지점 인 main.m이 필요합니다. 빈 템플릿을 선택하거나 자신 만의 템플릿을 만들 수 있습니다. 비록 당신이 당신 자신을 만들지 만 당신은 autorelease 풀을 가지고 있는지 확인해야합니다. main.m에 앱 대리자를 가져와야하고 UIKit도 필요하다는 것을 알고 있습니다. 필요에 따라 다음 앱 위임 클래스를 교체 (다음 코드를 추가합니다

int main(int argc, char *argv[]) 
    { 
     int retVal = 0; 
     @autoreleasepool { 
      retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
     } 
     return retVal; 
    }