I os 1
-
Upload
sanghoon-han -
Category
Technology
-
view
399 -
download
3
description
Transcript of I os 1
iOS - I한상훈
Eznix 산업기능요원
Obj-C 기초 개념 iOS - 앱 구조 분석, 기본 Event 처리, IB 활용
Objective - C ?
• Mac OS X, iOS 개발 언어
• C에 객체지향을 도입한 언어
• C의 Super Set
• C 에 스몰토크 스타일의 메시지 구문 추가
Objective - C ?
Obj C Basement
기본 문법 - 표현법
• 객체 표현
• id Keyword
• 어떤 객체든 표현 가능
• id를 기반으로 객체간 동적 형 변환 지원
• ex ) id obj;
기본 문법 - 표현법
• 메세지 표현식
• [ ]를 메시지 표현식, 배열 두 군데에서 사용
• ex ) [obj msg1];
• ex ) element = arr[[obj count]];
• 메소드 호출과는 다르다
기본 문법 - 타입• Primitive Type - in C
• int, float, double, bool...etc
• Foundation Framework Type - in Obj-C
• NSInteger, CGFloat... etc
• 아키텍처에 따라 구분해서 컴파일
메세지 표현식• C++, Java
• obj.doSomething();
• Objective - C
• [obj doSomething];
• 두 개는 근본적으로 다르다.
• 검사는 컴파일 타임 / 검사, 매칭 모두 런타임
Obj-C - 메시지(함수)
• 기본적인 함수 선언, 콜 방식은 C 스타일
• 상속 방식은 C++ 보다는 Java에 가까움
• multiple inheritance 미지원
• protocol 로 interface
Obj-C - 메시지(함수)
• 구분자 ( 반환값 ) 키워드 : (타입) .....
• 구분자
• + : Class Method
• - : Instance Method
• (반환값), (타입) : 인자 및 반환값의 타입
• 키워드 : 함수명 및 인자 키워드
• Ex ) +(NSInteger) objectAtIndex:(NSInteger)
Obj-C - 클래스
• Obj - C 의 클래스는 NSObject 를 상속
• Instance 생성에는 [[클래스명 alloc] init]
Obj-C - 클래스• 구현부 - m
• @implementation
• ...
• 메서드 구현
• ...
• @end
Obj-C - 클래스• 선언부 - h
• @interface 클래스명 : 슈퍼클래스명 <프로토콜>
• {
• 멤버 변수 선언;
• }
• 메서드 선언;
• @end
Obj-C - 클래스
iOS App
App 생성
App 구조 분석
AppDelegate
• 어플리케이션 의 Delegate가 구현된 것
• UIApplication Object의 Delegate로서, 앱의 실행 상태 및 행동에 대한 프로토콜이 정의되어 있음
AppDelegate• - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions
• 어플리케이션이 처음 실행되고, Active상태가 된 뒤에 호출되는 함수, launchOptions Dictionary 에 실행 정보가 담겨온다.
• - (void)applicationWillResignActive:(UIApplication *)application
• 앱이 비활성화 상태가 될 때 실행된다. 스택에 가장 먼저쌓여서 다른 메서드보다 먼저 실행된다. ( 전화, 홈버튼 등등 )
• - (void)applicationDidEnterBackground:(UIApplication *)application
• 앱이 백그라운드로 넘어갈 때 실행된다.
• - (void)applicationWillEnterForeground:(UIApplication *)application
• 앱이 포어그라운드로 돌아올 때 실행된다.
• - (void)applicationDidBecomeActive:(UIApplication *)application
• 앱이 Active 상태로 전환될 때 실행된다. 잠금 화면 풀기, 태스크 전환 등 - 다른 함수가 실행되고 난 다음에 마지막으로 실행된다.
• - (void)applicationWillTerminate:(UIApplication *)application
• 앱이 완전 종료될 때 실행된다.
Story Board
• 실행 순서 및 화면 제공
• 뷰를 시각적으로 구성 가능
• 이벤트 구성 가능
• Xib를 대체
ViewController
• StoryBoard에서 만들어진 부의 컨트롤러
• 실질적인 이벤트의 내용 작성 및 처리가 이루어지는 곳
Etc
• Images.xcassets
• 아이콘 및 Launch Image를 관리하기 쉽게 추가된 assets
• .plist 파일
• 어플리케이션 정보를 담고 있는 파일
• 앱 이름, 번들, 구분자 등등 설정 내용도 가지고 있음
• . pch 파일 • Pre-Compiled-Header 의 약자로, 모든 파일에 적용되는 헤더로, #define등이 전역적으로 필요하다면 이 곳에 선언하면 된다.
• Main.m - 첫 실행 파일, 수정할 필요는 없다.
IBOutlet, IBAction Event
Transition
IBOutlet, IBAction
Code Side
• 대응 변수 작성
• 대응 이벤트 함수 작성
Code Side
• IBAction : IB에서 인식할 수 있는 액션 함수
• id는 이벤트 객체가 넘어온다.
• IBAction Keyword는 내부적으로 void로 선언되어 있다.
!
• IBOutlet : IB에서 인식할 수 있는 View 변수
• IB에서 맵핑을 통해서 Controller에서 View 를 컨트롤 가능하다.
Code Side
• 대응 이벤트 함수 내용 작성
IB Side• 대응 View 추가
Drag & Drop
IB Side
• 대응 View IBOutlet 과 연결
• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그
IB Side
• 대응 View IBOutlet 과 연결
• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그
• 원하는 IBOutlet과 매칭
IB Side
• 대응 View IBOutlet 과 연결
• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그
• 원하는 IBOutlet과 매칭
IB Side
• 대응 View IBOutlet 과 연결
• 하단 바의 가장 왼쪽ViewController 클릭 - 드래그
• 원하는 IBOutlet과 매칭
• UIButton도 마찬가지로 작업
Event
IB Side• Event 대응 연결
• 버튼 클릭 시 발동 이벤트 연결
• 액션을 받을 컴포넌트를 오른쪽으로 드래그 - 하단의 ViewController로 드래그 앤 드랍
IB Side• Event 대응 연결
• 버튼 클릭 시 발동 이벤트 연결
• 액션을 받을 컴포넌트를 오른쪽으로 드래그 - 하단의 ViewController로 드래그 앤 드랍
• IBAction 으로 선언된 이벤트를 할당
IB Side• Event 대응 연결
• 버튼 클릭 시 발동 이벤트 연결
• 액션을 받을 컴포넌트를 오른쪽으로 드래그 - 하단의 ViewController로 드래그 앤 드랍
• IBAction 으로 선언된 이벤트를 할당
Code Side
• 이미 함수 내용이 작성되었으므로 할 일이 없음
Transition
기존 방식
• RootView Controller Change
• [RootViewController addSubView:ViewController.view]
• Navigation Controller
• pushViewController, popViewController
Segue?
• 기존의 방식을 대체
• IB에서 조작 가능
• 커스텀 기능도 지원
• Identifier로 구분, 코드에서 추가 처리 가능
Segue Transition
• 이벤트를 IB상에서 직접 추가하는 방법
!
!
• Segue를 생성 후 이벤트에서 수행하는 방법
Segue Transition
• Segue를 생성 후 이벤트에서 수행 - Segue 생성
Source ViewController Destination ViewController
Drag & Drop
Segue Transition
• Segue를 생성 후 이벤트에서 수행 - Segue 생성
Source ViewController Destination ViewController
Segue Transition
• Segue를 생성 후 이벤트에서 수행 - Segue 생성
Source ViewController Destination ViewControllerSegue
Segue Transition
• Segue를 생성 후 이벤트에서 수행 - Segue 생성
Segue Transition
• Segue를 생성 후 이벤트에서 수행 - Event 설정
• performSegueWithIdentifier 메서드를 통해서 Segue 동작 호출
Segue Transition
• IB상에서 직접 추가 - Segue 생성
Drag & Drop
Segue Transition
• IB상에서 직접 추가 - Segue 생성
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller와 연계
Segue Transition
• Navigation Controller
• Pop시에는 Segue 이동이 아닌 popViewController 메서드로도 이동이 가능함
Segue Transition
• Navigation Controller
• Pop시에는 Segue 이동이 아닌 popViewController 메서드로도 이동이 가능함
Segue Transition
Segue Etc.
Segue - Etc.
• Segue Event, IBAction
• IBAction, Segue Event 순으로 호출
Segue - Etc.
• Custom Segue
• UIStoryboardSegue 상속
• perform method override
• source, Destination viewController
Segue - Etc.-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender •Segue Event 호출 시에 Source 부분에서 호출되는 함수. •데이터 전달 시 segue의 identifier로 어떤 segue인지 구분해서 Source, Destination의 정보를 조작 가능하다.
Segue - Etc.
Segue - Etc.• RelationShip
• NavigationController, TabViewController와 같이 RootViewController가 필요한 Controller들의 첫 RootView를 나타내기 위해서 쓰이는 Segue
• Push
• NavigationController에서 화면 전환을 위해 사용되는 Segue
• pushViewController에 대응되는 IB Segue
• Modal
• ModalView를 띄울 때 사용되는 Segue
• presentModalViewController와 대응되는 IBSegue
• Custom
• Custom Segue, 사용자 액션 지정 가능