최초 작성일 : 2010/03/12 07:21
//UIApplicationDelegate을 사용하기 위해 UIKit Framework를 삽입
#import <UIKit/UIKit.h>
//MyViewController 클래스를 이 클래스 내에서 사용하겠다는 의미
//우선은 MyViewController라는 이름의 클래스를 사용하겠다고 '예약'만 해놓은
//상태로서 후에 MyViewController클래스의 구현이 변경되어도 이 클래스를
//재컴파일 할 필요가 없다.
@class MyViewController;
//HelloWorldAppDelegate 선언. NSObject를 상속 받고 있으며
//UIApplicationDelegate 프로토콜을 따른다.
@interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate> {
//IBOutlet은 nib(xib)파일들 안의 객체와 연결되는 인스턴스 변수임을 알려주는 키워드
IBOutlet UIWindow *window;
//@class에 선언된 MyViewController 클래스를 인스턴스 변수로 사용함
MyViewController *myViewController;
}
//@property는 컴파일시에 .m파일 내의 @synthesize키워드와 결합하여
//자동으로 접근자와 변경자(getter, setter) 메서드를 생성해준다.
//retain : 메모리에 할당된 특정 객체를 객체를 참조한다는 것을 의미함
// retain 카운트가 있어 참조되면 1이 더해지고 릴리즈되면 1이 감소하여
// 카운트가 0이되면 메모리에서 해제된다.
// 이 속성을 사용하게 되면 해당 객체는 autorelease를 사용하게 된다.
//nonatomic : 접근자와 변경자 메서드가 생성되는 방법과 관련된 키워드
멀티쓰레드 프로그램 작성시 필요한 추가 코드를 생략할 수 있도록 해줌
멀티쓰레드 프로그램 작성시에는 atomic으로 사용하는 것이 좋음
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) MyViewController *myViewController;
@end
//인터페이스 선언 파일 삽입
#import "HelloWorldAppDelegate.h"
//.h파일에서 @class로 선언한 MyViewController를 사용하기 위해서 헤더파일 삽입
#import "MyViewController.h"
@implementation HelloWorldAppDelegate
//헤더 파일의 @property와 짝을 이루어 자동으로 접근자와 변경자(getter, setter)메서드를
//생성해준다. 이 코드를 통해 코딩시에는 보이지 않지만 접근자인 window 라는 메서드와
//변경자인 setWindow라는 메서드가 생성된다. myViewController도 마찬가지...
@synthesize window;
@synthesize myViewController;
//어플리케이션이 모든 설정 작업을 마치고 사용자와 상호 작용할 준비를 하는 메서드
//이 메서드는 subview형태로 뷰 컨트롤러의 뷰를 애플리케이션의 메인에 붙여 사용자가
//윈도우를 볼 수 있도록 한다.
//리턴 값은 없으며 메인 애플리케이션의 객체를 인자로 받는다.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Set up the view controller
// 뷰 컨트롤러 생성
// nib파일의 이름인 HelloWorld와 NSBundle 객체를 인자로
// MyViewController의 인스턴스를 생성함
// NSBundle은 애플리케이션의 Root와 하위 경로들을 찾을 수 있도록 해주며
// 해당 경로의 리소스에 접근할 수 있도록 해준다.
MyViewController *aViewController = [[MyViewController alloc] initWithNibName:@"HelloWorld" bundle:[NSBundlemainBundle]];
//인스턴스 변수 myViewController에 새로 생성한 aViewController를 대입
self.myViewController = aViewController;
//alloc을 통해 생성했으므로 release해줌
[aViewController release];
// 애플의 SDK상에서 각 애플리케이션은 단 하나의 UIApplication인스턴스를 가지며
// 그 하나의 인스턴스는
// [UIApplication sharedApplication]을 통해 접근 가능하다.
// [UIApplication sharedApplication]을 통해 상태 바 스타일을 지정하고 있는 코드
// 상태바 스타일은 다음 3가지 중 하나
// UIStatusBarStyleDefault,
// UIStatusBarStyleBlackTranslucent,
// UIStatusBarStyleBlackOpaque
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
// Add the view controller's view as a subview of the window
// myViewController를 subview로 윈도우에 붙임
UIView *controllersView = [myViewController view];
[window addSubview:controllersView];
[window makeKeyAndVisible];
}
//메모리 해제 메서드
- (void)dealloc {
[myViewController release];
[window release];
[super dealloc];
}
@end
참고문헌 :
'Development > iPhone' 카테고리의 다른 글
[옛 글] Hello World - Interface Builder : Library 창 (0) | 2013.07.05 |
---|---|
[옛 글] Hello World - MyViewController.h, MyViewController.m (0) | 2013.07.05 |
[옛 글] Hello World - main.m, ..._Prefix.pch (0) | 2013.07.04 |
[옛 글] Hello World - 소스 목록 (0) | 2013.07.04 |
[옛 글] Hello World (0) | 2013.07.04 |