SlideShare a Scribd company logo
1 of 14
14. Swift 튜토리얼
- 옵셔널체인
창원대학교정보통신공학과박동규
2016. 2.
옵셔널타입(형)
• nil이할당될수있는타입
• nil은 초기에할당될수도있고프로그램실행중에에러가
나면자동할당되기도 한다
• 옵셔널은nil이 할당될수있으므로nil인지 검사를하는
것이안전하다
• 옵셔널타입은if 를사용하여nil인지검사해야하므로
if 문을많이사용하게된다
옵셔널타입
• 클래스나구조체의메소드는호출하기전에반드시인스턴스가nil인가 검사
를해야한다
• 클래스나구조체인스턴스의안정성검사가필요함
옵셔널비강제 해제
• 옵셔널타입을unwrapping 하기위하여‘!’ 연산을사용
하지않아도문맥상값을가지는것이명백하다면(즉 nil
을가질가능성이없다면), 이옵셔널타입은비강제해제
(implicitly unwrapping)된다
옵셔널비강제 해제
• 비강제해제(implicitly unwrapping)된 값은옵셔널이아
니므로‘!’로 더이상강제해제를할수 없다
옵셔널체인
• 비강제해제(implicitly unwrapping)를 위해서는if 문을
통한검사가필요하다(많은if 문이 필요)
• 옵셔널타입으로정의된값이하위프로퍼티나메소드를
가질때,이요소들을if 구문을사용하지않고도간결하게
사용할수있도록 도입됨
예시
강제언래핑의 위험성
강제언래핑의 위험성
옵셔널체인
• 옵셔널타입의값이프로퍼티나메소드를가지고있을때,이
요소들을if 구문을사용하지않고도간결하게사용할수있는
코드를작성할수 있음
• 옵셔널선언시에사용하는?를그대로사용함
• cwnu.president 는cwnu 인스턴스가옵셔널일경우
president라는 멤버를호출하기위해!로 강제언래핑이필요
하며, cwnu가 nil 일경우crash가 발생함
• 옵셔널체인은cwnu?.president 과같이?를연속하여사용
함.
옵셔널체인을 사용
옵셔널체인을 사용
옵셔널체인
• 옵셔널연산자로처리된구문에계속해서옵셔널연산자를붙
여서코딩을할수 있다
• 옵셔널체인을이용하여값을할당할수있다
• 옵셔널체인으로참조된값은옵셔널타입으로반환된다
• 옵셔널체인이라는구문은nil을 반환할가능성을가지고있
다
• 옵셔널체인이적용된객체가nil이라도 오류가발생하지않
음
감사합니다
dongupak@gmail.com

More Related Content

Viewers also liked

Viewers also liked (13)

13 swift 옵셔널
13 swift 옵셔널13 swift 옵셔널
13 swift 옵셔널
 
20 swift 집합형
20 swift 집합형20 swift 집합형
20 swift 집합형
 
1 swift소개
1 swift소개1 swift소개
1 swift소개
 
15 swift 클래스
15 swift 클래스15 swift 클래스
15 swift 클래스
 
11 swift 값타입참조타입
11 swift 값타입참조타입11 swift 값타입참조타입
11 swift 값타입참조타입
 
7 swift 제너릭스
7 swift 제너릭스7 swift 제너릭스
7 swift 제너릭스
 
17 swift 프로토콜
17 swift 프로토콜17 swift 프로토콜
17 swift 프로토콜
 
9 swift 클로저1
9 swift 클로저19 swift 클로저1
9 swift 클로저1
 
5 swift 기초함수
5 swift 기초함수5 swift 기초함수
5 swift 기초함수
 
10 swift 열거형구조체클래스
10 swift 열거형구조체클래스10 swift 열거형구조체클래스
10 swift 열거형구조체클래스
 
4 swift 흐름제어
4 swift 흐름제어4 swift 흐름제어
4 swift 흐름제어
 
30 힙 정렬2 - 최대힙,최소힙,정렬
30 힙 정렬2 - 최대힙,최소힙,정렬30 힙 정렬2 - 최대힙,최소힙,정렬
30 힙 정렬2 - 최대힙,최소힙,정렬
 
Swift Programming Language
Swift Programming LanguageSwift Programming Language
Swift Programming Language
 

More from Changwon National University

More from Changwon National University (20)

생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf생성인공지능둘러보기.pdf
생성인공지능둘러보기.pdf
 
2011 app center Changwon National Univ.
2011 app center Changwon National Univ.2011 app center Changwon National Univ.
2011 app center Changwon National Univ.
 
인공지능의 파도가 온다
인공지능의 파도가 온다인공지능의 파도가 온다
인공지능의 파도가 온다
 
Mobile Healthcare Application
Mobile Healthcare ApplicationMobile Healthcare Application
Mobile Healthcare Application
 
바다 즐기기
바다 즐기기바다 즐기기
바다 즐기기
 
알아두면 편리한 macOS 에디터 단축키와 기능
알아두면 편리한 macOS 에디터  단축키와 기능알아두면 편리한 macOS 에디터  단축키와 기능
알아두면 편리한 macOS 에디터 단축키와 기능
 
키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)키보드 기호의 이름 알아보기(한국어, 영어)
키보드 기호의 이름 알아보기(한국어, 영어)
 
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
AI 로봇 아티스트의 비밀(창원대학교 정보통신공학과 특강)
 
20 2 강의를 마치며
20 2 강의를 마치며20 2 강의를 마치며
20 2 강의를 마치며
 
20 1 코딩스타일
20 1 코딩스타일20 1 코딩스타일
20 1 코딩스타일
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리
 
18 1 파이썬패키지
18 1 파이썬패키지18 1 파이썬패키지
18 1 파이썬패키지
 
17 2 필터함수와 맵함수
17 2 필터함수와 맵함수17 2 필터함수와 맵함수
17 2 필터함수와 맵함수
 
17 1 람다함수
17 1 람다함수17 1 람다함수
17 1 람다함수
 
16 1 상속과super()
16 1 상속과super()16 1 상속과super()
16 1 상속과super()
 
15 2 클래스정의와self
15 2 클래스정의와self15 2 클래스정의와self
15 2 클래스정의와self
 
14 4 슬라이싱
14 4 슬라이싱14 4 슬라이싱
14 4 슬라이싱
 
14 2 iterator
14 2 iterator14 2 iterator
14 2 iterator
 
14 3 리스트함수
14 3 리스트함수14 3 리스트함수
14 3 리스트함수
 
14 1 리스트의 메소드
14 1 리스트의 메소드14 1 리스트의 메소드
14 1 리스트의 메소드
 

Recently uploaded

Recently uploaded (8)

JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 

14 swift 옵셔널체인