페이지

2017년 12월 9일 토요일

1.4. 첫 번째 애플리케이션-싱글 뷰 컨트롤러(Single View Controller)

- 일반적으로 Swift 가 아닌 Object-C 에서 작성된 아이폰 애플리케이션은 항상 프로젝트의 Supporting Files 폴더에서 자동으로 생성되는 main.m 파일에서 시작한다.

int main(int argc, char *argv[])
{
    @autoreleasepool{
          return UIApplicationMain(argv, argv, nil,
                                                    NSStringFormClass([AppDelegate class]))
    }
}

하지만 Swift 에서는 Object-c 언어의 main.m에 해당하는 main.swift 파일이 존재하지 않는다. 바로 AppDelegate 클래스에서 처리하게 된다.

AppDelegate 클래스를 선언하는  AppDelegate,swift 파일을 보면 다음과 같이 파일 앞쪽에 @UIApplication 서브 클래스를 ㅊ처리하고 이어서 AppDelegate 객체를 생성하게 된다.

import UIKit

@UIApplicationMain
......

즉, 위 코드 하나를 사용하여 UIApplicationMain 함수를 호출하고 이 함수는 다시 내부적으로 UIApplication  객체를 생성하고 AppDelegate 클래스를 호출하게 된다.


AppDelegate 클래스에서는 다음과 같은 func application(application, didFinishLaunchingWithOption) 메소드를 자동으로 호출하는데 이전 xCode 에서는 이메소드에서 스토리 보드 파일의 화면 구성을 처리하였다. 하지만 현재는 단지 "return true"라는 코드가 있을 뿐 다른 아무런 코드가 존재하지 않는다. 그렇다면 어떻게 스토리보드 파일의 화면을 호출 할 수 있을까?

fun application(application: UIApplication, didFinishLauchingWidthOptions
     launchOptions: [NSObject: AnyObject]?) -> Bool {
    //Override point for customization after application launch.
    return true
}

프로그램 탐색기의 Supporting Files 폴더 아래쪽에 있는 Info.plist 파일에서 이 일을 자동으로 처리한다.

-ViewController

import UIKit

class ViewController: UIViewController{
....

@IBOutlet  var textField: UITextField!

@IBAction func clickedCompleted(sender: AnyIbject){
......

참고: @IBOutlet 과 @IBAction 키워드
컴파일 코드에 아무런 여향을 주지 않는 컴파일러 지시자이다. 두 개 보두 현재 선언된 객체 변수가 .storyboard 파일에 지정된 객체 컨트롤과 연결되어 있다는 것을 알려준다.


댓글 없음: