IOS 개발 학습 - 프로그램 시작 원리
6143 단어 objective-cios
Info.plist pch
UIApplication
AppDelegate
UIApplication、AppDelegate、UIWindow、UIViewController
iOS
2. info.plist와 pch 파일의 흔한 설정
프로젝트를 만들면 Supporting files 폴더 아래에 프로젝트 이름 - Info.plist 라는 파일이 표시됩니다. 이 파일은 프로젝트를 실행하는 동안 매우 중요하기 때문에 삭제할 수 없습니다.
이전 버전의 Xcode에서 만든 프로젝트에서 이 프로필의 이름은 "Info.plist"이다
프로젝트 중 다른 Plist 파일에는 "Info"라는 단어가 있을 수 없습니다. 그렇지 않으면 전설에서 매우 중요한 "Info.plist"로 오인될 수 있습니다.
프로젝트에 InfoPlist가 하나 더 있습니다.strings 파일, Info.plist 파일의 로컬화 관련
Info.plist
일반 속성 (빨간색 부분은 텍스트 편집기로 열 때 보이는 키)
프로젝트의 Supporting files 폴더 아래에는 프로젝트 이름 - Prefix.pch 파일이 있고 헤더 파일입니다.
pch 헤더 파일의 내용은 프로젝트의 다른 모든 원본 파일에 공유되고 접근할 수 있습니다
일반적으로 pch 파일에서 전역 매크로를 정의합니다
pch 파일에 다음 예처리 명령을 추가한 후 프로젝트에서 로그 정보를 출력하려면 로그 정보를 사용할 때 NSLog 문장을 한꺼번에 제거할 수 있습니다. (디버그 모드에서 정의된 DEBUG가 있어야 합니다.)
#ifdef DEBUG
#define Log(...) NSLog(__VA_ARGS__)
#else
#define Log(...) /* */
#endif
UIApplication
UIApplication 객체는 애플리케이션의 상징
각 애플리케이션마다 고유한 UIAPplication 객체가 있으며 단일 인스턴스
이 단일 객체는 [UIApplication sharedApplication]에서 사용할 수 있습니다.
iOS 프로그램을 시작한 후 작성되는 첫 번째 객체는 UIAPplication 객체입니다.
UIApplication 객체를 사용하여 일부 어플리케이션 수준의 작업을 수행할 수 있습니다.
UIApplication의 일반 속성
응용 프로그램 아이콘의 오른쪽 위 모서리에 빨간색 알림 숫자를 설정합니다.
@property(nonatomic) NSInteger applicationIconBadgeNumber;
네트워킹 표시기의 가시성 설정
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
iOS7의 상태 표시줄
- (UIStatusBarStyle)preferredStatusBarStyle;
상태 표시줄 가시성
- (BOOL)prefersStatusBarHidden;
상태 표시줄 관리를 위한 UIAPplication
UIApplication을 사용하여 상태 표시줄을 관리하려면 먼저 Info를 수정해야 합니다.plist 설정
openURL:
UIApplication에는 강력한 OpenURL:메서드가 있습니다.
- (BOOL)openURL:(NSURL*)url;
openURL: 방법의 일부 기능은
전화를 걸다
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@"tel://10086"]];
- 문자 보내기
[app openURL:[NSURL URLWithString:@"sms://10086"]];
- 메일 보내기
[app openURL:[NSURL URLWithString:@"mailto://[email protected]"]];
- 웹 에셋 열기
[app openURL:[NSURL URLWithString:@"http://ios.itcast.cn"]];
- 다른 앱 열기
UIApplication *app = [UIApplication sharedApplication];
4. UIAPplication 및 delegate
모든 모바일 운영체제는 앱이 방해받기 쉽다는 치명적인 단점을 가지고 있다.예를 들어 전기가 오거나 스크린을 잠그면 앱이 백스테이지에 들어가거나 정지될 수도 있다.
또 많은 다른 유사한 상황으로 인해 app가 방해를 받을 수 있다. app가 방해를 받을 때 시스템 이벤트가 발생할 수 있다. 이때 UIApplication은 이 시스템의 delegate 대상을 알려주고delegate 에이전트가 이 시스템 이벤트를 처리하도록 한다.
delegate에서 처리할 수 있는 이벤트는 다음과 같습니다.
프로그램의 생명주기 이벤트(예를 들어 프로그램 시작 및 닫기)
시스템 이벤트 (예: 전화)
메모리 경고
… …
UIApplicationDelegate 프로토콜
// app
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
// app ( home )
- (void)applicationDidEnterBackground:(UIApplication *)application;
// app
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
UIApplicationDelegate
프로젝트를 새로 만들 때마다 "AppDelegate"라는 단어가 있는 클래스가 있습니다. 이것은 UIAPplication의 에이전트입니다.
MJAPPDelegate는 기본적으로 UIApplicationDelegate 프로토콜을 준수하고 있으며 UIApplication의 에이전트가 되었습니다
iOS 프로그램 시작 프로세스
UIApplicationMain 함수에서 UIApplicationMain이 실행되었습니다.
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
argc,argv:UIApplicationMain에 직접 전달하여 관련 처리를 진행하면 됩니다.
principalClassName: 프로그램 클래스 이름 (app의 상징) 을 지정합니다. 이 클래스는 UIApplication (또는 하위 클래스) 이어야 합니다.nil 인 경우 기본값으로 UIAPplication 클래스 사용
delegateClassName: 응용 프로그램의 프록시 클래스를 지정합니다. 이 클래스는 UIAPplicationDelegate 프로토콜을 준수해야 합니다.
5. UIWindow
1. UIWindow는 특수한 UIView로 보통 한 앱에 하나의 UIWindow만 있다
2. iOS 프로그램이 시작된 후 첫 번째 보기 컨트롤은 UIWindow입니다. 이어서 컨트롤러의view를 만들고 마지막으로 컨트롤러의view를 UIWindow에 추가합니다. 그래서 컨트롤러의view가 화면에 표시됩니다.
3. iOS 프로그램이 화면에 나타나는 이유는 UIWindow 때문이다.
4. UIWindow가 없으면 UI 인터페이스가 보이지 않는다는 뜻이다
UIWindow에 UICView를 추가하는 일반적인 방법:
UIView를 UIWindow에 추가하는 일반적인 방법은 다음과 같습니다.
- (void)addSubview:(UIView *)view;
뷰를 UIWindow에 직접 추가하지만 뷰에 대응하는 UIViewController는 아랑곳하지 않습니다
@property(nonatomic,retain) UIViewController *rootViewController;
루트ViewController의view를 UIWindow에 자동으로 추가하여 루트ViewController의 생명주기 관리를 담당합니다
상용 방법
- (void)makeKeyWindow;
현재 UIWindow를 keyWindow(기본 창)로 변경
- (void)makeKeyAndVisible;
현재 UIWindow를 keyWindow로 변경하여 표시
UIWindow의 획득
[UIApplication sharedApplication].windows
이 응용 프로그램에서 열린 UIWindow 목록을 사용하면 응용 프로그램의 UIView 객체에 액세스할 수 있습니다.
(평소 입력한 텍스트 팝업 키보드가 새 UIWindow에 있음)
[UIApplication sharedApplication].keyWindow
키보드와 터치 클래스가 아닌 메시지 이벤트를 수신하는 데 사용되는 UI Window입니다. 프로그램에서 매 순간 하나의 UI Window가 키 Window일 수 있습니다.만약 어떤 UIWindow 내부의 텍스트 상자에 텍스트를 입력할 수 없다면, 아마도 이 UIWindow가 키Window가 아니기 때문일 것이다
view.window
UIView가 있는 UIWindow 가져오기
4대 대상 관계도
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
iOS 메모설 연휴 동안 회사의 프로젝트 시간이 매우 바쁜 데다가 자신이 iOS의 작은 프로젝트를 하나 하고 있기 때문에 퇴근과 주말 시간에 거의 쉬지 않아서 블로그도 태만해졌다. 여기에는 내가 이 작은 프로젝트를 쓸 때 사용...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.