최초 작성일 : 2010/03/12 07:21



HelloWorldAppDelegate.h


//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 (nonatomicretain) UIWindow *window;

@property (nonatomicretain) MyViewController *myViewController;


@end



HelloWorldAppDelegate.m


//인터페이스 선언 파일 삽입

#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 allocinitWithNibName:@"HelloWorld" bundle:[NSBundlemainBundle]];


//인스턴스 변수 myViewController에 새로 생성한 aViewController를 대입

self.myViewController = aViewController;


//alloc을 통해 생성했으므로 release해줌

[aViewController release];

    

     // 애플의 SDK상에서 각 애플리케이션은 단 하나의 UIApplication인스턴스를 가지며

     //   그 하나의 인스턴스는

//  [UIApplication sharedApplication]을 통해 접근 가능하다.

//  [UIApplication sharedApplication]을 통해 상태 바 스타일을 지정하고 있는 코드

//  상태바 스타일은 다음 3가지 중 하나

//  UIStatusBarStyleDefault,

     // UIStatusBarStyleBlackTranslucent,

     // UIStatusBarStyleBlackOpaque

    [[UIApplication sharedApplicationsetStatusBarStyle: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


 참고문헌 :
[시작하세요 아이폰 3 프로그래밍], 위키북스
[예제로 시작하는 아이폰 개발], 에이콘

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^