SlideShare a Scribd company logo
1 of 17
Download to read offline
Swift Tour
군산대학교 컴퓨터정보통신공학부 컴퓨터정보공학전공
남 광 우
kwnam@kunsan.ac.kr
Swift 3 Tour and Language Guide by Apple
꼼꼼한 재은씨의 Swift 2 프로그래밍
Swift 개요
• Apple의 Mac OS X와 iOS용 응용 개발을 위해 개발
된 언어
• 2014년 6월 2일 WWDC 2014에서 발표
• App 개발시 Objective‐C를 대체하기 위한 언어
• LLVM 등 최신 프로그래밍 언어 기능 포함
Swift 특징
• 데이터 타입 추론
• Java script, python 과 같은 dynamic binding 언어 아님
• C, C++과 같은 static binding 언어
• 그러나, 데이터 타입 추론 기능 등을 이용하여
dynamic binding 처럼 유연성을 제공
• LLVM( Low‐Level Virtual Machine)
• LLVM 채택으로 인한 비교적 빠른 성능
• 안정성(Safe)   : Objective‐C 대비
• Array Bounds check기능
• 포인터 직접 접근 차단 기능
• 현대적(Modern)
• Optional, Generics, Closure, Tuple  등 현대적 기능 제공
Swift 특징
Hello World in Swift
print( “ Hello World “)
• Hello World 하기
• main() 함수가 필요없음
Swift의 문법적 특성
• Header 파일을 작성할 필요가 없음
• *.h   *.c  와 같이 전처리를 위한 헤더파일 구분 불필요
• 변수 선언과 상수 선언의 구분
• Swift는 대소문자를 구분
• let A = 30
• let a = 40
var a : Int //변수선언
let A = 4      // 상수선언
a = 5
Swift의 문법적 특성
• 문장 끝의 세미콜론(;)은 옵션
• main() 함수가 없음
• @UIApplicationMain 어노테이션 사용
• 문자열 뿐만 아니라 문자도 큰 따옴표
print( “hello” )
print( “hello2”) ;
var str : String = “Hello”
var ch : Character = “H”
Simple Values
• 변수와 상수의 선언
• 타입의 추정
var myVariable = 42  // 변수
myVariable = 50
let myConstant = 42 // 상수
let implicitInteger = 70
let implicitDouble = 70.0
let explicitDouble: Double = 70
Simple Values
• 서로 다른 타입 값의 변환
• 변수 상수의 이름은 한글 한자도 가능
let label = "The width is "
let width = 94
let widthLabel = label + String(width)
var 한글변수 = 3
let ㅎㄱㅂㅅ = 5.3
기본 자료형
• Int
• Int8, Int16, Int32, Int64
• Uint
• UInt8, UInt16, UInt32, UInt64
• Double & Float
• Bool
• String
• Character
기본 자료형
• 자료형의 선언과 사용의 세가지 방법
// first
var day = 7
// second
var day : Int
day = 7
//  third
var day : Int = 7
// 다음은 error!!!!
var day 
day = 7
닫힌 범위 연산자
• 범위 값을 나타내는 연산
• 1…5  : 1, 2, 3, 4, 5
• 1..<5 : 1, 2, 3, 4
• for 문에서의 사용
• hello 100번 print 하기
for  i in 1…100
{
print( “Hello” )
}
문자열 template
• 변수, 상수 값을 대입하기 위한 template
•  (이스케이프) 문자의 사용
• hello world  1..<100 까지 번호와 함께 찍기
let apples = 3
let oranges = 5
let appleSummary = "I have (apples) apples."
let fruitSummary = "I have (apples + oranges) pieces of fruit.
배열의 선언
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
• 배열의 선언
• dictionary형 배열
배열의 선언
let emptyArray = [String]()
let emptyDictionary = [String: Float]()
• empty 배열의 선언
• 배열 사용의 예
• 배열의 값을 print하기
흐름 제어 : For 구문
• for 구문의 구조
• ; 생략가능
for( 초기값;  비교값; 증가값) 
{
{
for var i = 0; I < 10; i++ 
{
print( “ (i) 번째 실행“)
{ 
for (var i = 0; I < 10; i++)
{
print( “ (i) 번째 실행“);
{ 
Swift 2 O;Swift 3 X
흐름 제어 : For 구문
• if 문과 함께 사용
• for ~ in 구문에서 루프상수의 생략
• 아래에서 변수 i는 필요없음
• 그러므로 _ 로 대체 가능
for ( var i = 0 ; ; i++ )
{
if ( i>= 10 )
break;
}
for  i in 1…100
{
print( “Hello” )
}
for  _  in 1…100
{
print( “Hello” )
}
Swift 2 O;Swift 3 X
Swift 2 O;Swift 3 O

More Related Content

Viewers also liked

집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기Kwang Woo NAM
 
집단지성 프로그래밍 06-의사결정트리-01
집단지성 프로그래밍 06-의사결정트리-01집단지성 프로그래밍 06-의사결정트리-01
집단지성 프로그래밍 06-의사결정트리-01Kwang Woo NAM
 
집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요Kwang Woo NAM
 
[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축
[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축
[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축Kwang Woo NAM
 
[공간정보시스템 개론] L04 항공사진의 이해
[공간정보시스템 개론] L04 항공사진의 이해[공간정보시스템 개론] L04 항공사진의 이해
[공간정보시스템 개론] L04 항공사진의 이해Kwang Woo NAM
 
Swift 3 Programming for iOS: Function
Swift 3 Programming for iOS: FunctionSwift 3 Programming for iOS: Function
Swift 3 Programming for iOS: FunctionKwang Woo NAM
 
K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링Edward Yoon
 
Swift 3 Programming for iOS : Protocol
Swift 3 Programming for iOS : ProtocolSwift 3 Programming for iOS : Protocol
Swift 3 Programming for iOS : ProtocolKwang Woo NAM
 

Viewers also liked (8)

집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기집단지성 프로그래밍 02-추천시스템 만들기
집단지성 프로그래밍 02-추천시스템 만들기
 
집단지성 프로그래밍 06-의사결정트리-01
집단지성 프로그래밍 06-의사결정트리-01집단지성 프로그래밍 06-의사결정트리-01
집단지성 프로그래밍 06-의사결정트리-01
 
집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요집단지성 프로그래밍 01-데이터마이닝 개요
집단지성 프로그래밍 01-데이터마이닝 개요
 
[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축
[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축
[FOSS4G KOREA 2014]Hadoop 상에서 MapReduce를 이용한 Spatial Big Data 집계와 시스템 구축
 
[공간정보시스템 개론] L04 항공사진의 이해
[공간정보시스템 개론] L04 항공사진의 이해[공간정보시스템 개론] L04 항공사진의 이해
[공간정보시스템 개론] L04 항공사진의 이해
 
Swift 3 Programming for iOS: Function
Swift 3 Programming for iOS: FunctionSwift 3 Programming for iOS: Function
Swift 3 Programming for iOS: Function
 
K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링K means 알고리즘을 이용한 영화배우 클러스터링
K means 알고리즘을 이용한 영화배우 클러스터링
 
Swift 3 Programming for iOS : Protocol
Swift 3 Programming for iOS : ProtocolSwift 3 Programming for iOS : Protocol
Swift 3 Programming for iOS : Protocol
 

Similar to Swift 3 Programming for iOS

[SwiftStudy 2016] 1장. Swift 소개
[SwiftStudy 2016] 1장. Swift 소개[SwiftStudy 2016] 1장. Swift 소개
[SwiftStudy 2016] 1장. Swift 소개Keunhyun Oh
 
03_iOS개발환경
03_iOS개발환경03_iOS개발환경
03_iOS개발환경성관 윤
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포KwangSeob Jeong
 
김종욱 포트폴리오
김종욱 포트폴리오김종욱 포트폴리오
김종욱 포트폴리오Jonguk Kim
 
Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5Jonathan Jeon
 
1. klaytn intro
1. klaytn intro1. klaytn intro
1. klaytn intro전 민규
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향ssuser0e53c8
 
Xamarin.Forms (MVP ComCamp 2015)
Xamarin.Forms (MVP ComCamp 2015)Xamarin.Forms (MVP ComCamp 2015)
Xamarin.Forms (MVP ComCamp 2015)Gilbok Lee
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편NAVER D2
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Daniel Juyung Seo
 

Similar to Swift 3 Programming for iOS (20)

[SwiftStudy 2016] 1장. Swift 소개
[SwiftStudy 2016] 1장. Swift 소개[SwiftStudy 2016] 1장. Swift 소개
[SwiftStudy 2016] 1장. Swift 소개
 
03_iOS개발환경
03_iOS개발환경03_iOS개발환경
03_iOS개발환경
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
React native development
React native developmentReact native development
React native development
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
Manage book project
Manage book projectManage book project
Manage book project
 
Manage book project
Manage book projectManage book project
Manage book project
 
김종욱 포트폴리오
김종욱 포트폴리오김종욱 포트폴리오
김종욱 포트폴리오
 
llvm 소개
llvm 소개llvm 소개
llvm 소개
 
Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5
 
1. klaytn intro
1. klaytn intro1. klaytn intro
1. klaytn intro
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
Xamarin.Forms (MVP ComCamp 2015)
Xamarin.Forms (MVP ComCamp 2015)Xamarin.Forms (MVP ComCamp 2015)
Xamarin.Forms (MVP ComCamp 2015)
 
11.scripting
11.scripting11.scripting
11.scripting
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편
 
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
Tizen - A Linux Based Open Source Platform (제 17회 한국 LUG 소프트웨어 테크니컬 세미나)
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 

More from Kwang Woo NAM

메타버스시대의_디지털트윈과_지역성v01.pdf
메타버스시대의_디지털트윈과_지역성v01.pdf메타버스시대의_디지털트윈과_지역성v01.pdf
메타버스시대의_디지털트윈과_지역성v01.pdfKwang Woo NAM
 
해양디지털트윈v02.pdf
해양디지털트윈v02.pdf해양디지털트윈v02.pdf
해양디지털트윈v02.pdfKwang Woo NAM
 
Moving objects media data computing(2019)
Moving objects media data computing(2019)Moving objects media data computing(2019)
Moving objects media data computing(2019)Kwang Woo NAM
 
Moving Objects and Spatial Data Computing
Moving Objects and Spatial Data ComputingMoving Objects and Spatial Data Computing
Moving Objects and Spatial Data ComputingKwang Woo NAM
 
세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석
세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석
세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석Kwang Woo NAM
 
[공간정보시스템 개론] L03 지구의형상과좌표체계
[공간정보시스템 개론] L03 지구의형상과좌표체계[공간정보시스템 개론] L03 지구의형상과좌표체계
[공간정보시스템 개론] L03 지구의형상과좌표체계Kwang Woo NAM
 
[공간정보시스템 개론] L02 공간정보와 지리정보
[공간정보시스템 개론] L02 공간정보와 지리정보[공간정보시스템 개론] L02 공간정보와 지리정보
[공간정보시스템 개론] L02 공간정보와 지리정보Kwang Woo NAM
 
[공간정보시스템 개론] L01 공간정보시스템개요
[공간정보시스템 개론] L01 공간정보시스템개요[공간정보시스템 개론] L01 공간정보시스템개요
[공간정보시스템 개론] L01 공간정보시스템개요Kwang Woo NAM
 
[공간정보시스템 개론] L12 공간정보분석
[공간정보시스템 개론] L12 공간정보분석[공간정보시스템 개론] L12 공간정보분석
[공간정보시스템 개론] L12 공간정보분석Kwang Woo NAM
 
[공간정보시스템 개론] L11 공간정보의 구축
[공간정보시스템 개론] L11 공간정보의 구축[공간정보시스템 개론] L11 공간정보의 구축
[공간정보시스템 개론] L11 공간정보의 구축Kwang Woo NAM
 
[공간정보시스템 개론] L10 수치표고모델
[공간정보시스템 개론] L10 수치표고모델[공간정보시스템 개론] L10 수치표고모델
[공간정보시스템 개론] L10 수치표고모델Kwang Woo NAM
 
[공간정보시스템 개론] L09 공간 데이터 모델
[공간정보시스템 개론] L09 공간 데이터 모델[공간정보시스템 개론] L09 공간 데이터 모델
[공간정보시스템 개론] L09 공간 데이터 모델Kwang Woo NAM
 
[공간정보시스템 개론] L08 gnss의 개념과 활용
[공간정보시스템 개론] L08 gnss의 개념과 활용[공간정보시스템 개론] L08 gnss의 개념과 활용
[공간정보시스템 개론] L08 gnss의 개념과 활용Kwang Woo NAM
 
[공간정보시스템 개론] L07 원격탐사의 개념과 활용
[공간정보시스템 개론] L07 원격탐사의 개념과 활용[공간정보시스템 개론] L07 원격탐사의 개념과 활용
[공간정보시스템 개론] L07 원격탐사의 개념과 활용Kwang Woo NAM
 
[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해Kwang Woo NAM
 
[공간정보시스템 개론] L05 우리나라의 수치지도
[공간정보시스템 개론] L05 우리나라의 수치지도[공간정보시스템 개론] L05 우리나라의 수치지도
[공간정보시스템 개론] L05 우리나라의 수치지도Kwang Woo NAM
 
Swift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionSwift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionKwang Woo NAM
 
Swift 3 Programming for iOS : Enumeration
Swift 3 Programming for iOS : EnumerationSwift 3 Programming for iOS : Enumeration
Swift 3 Programming for iOS : EnumerationKwang Woo NAM
 
Swift 3 Programming for iOS : subscript init
Swift 3 Programming for iOS : subscript initSwift 3 Programming for iOS : subscript init
Swift 3 Programming for iOS : subscript initKwang Woo NAM
 
Swift 3 Programming for iOS: error handling
Swift 3 Programming for iOS: error handlingSwift 3 Programming for iOS: error handling
Swift 3 Programming for iOS: error handlingKwang Woo NAM
 

More from Kwang Woo NAM (20)

메타버스시대의_디지털트윈과_지역성v01.pdf
메타버스시대의_디지털트윈과_지역성v01.pdf메타버스시대의_디지털트윈과_지역성v01.pdf
메타버스시대의_디지털트윈과_지역성v01.pdf
 
해양디지털트윈v02.pdf
해양디지털트윈v02.pdf해양디지털트윈v02.pdf
해양디지털트윈v02.pdf
 
Moving objects media data computing(2019)
Moving objects media data computing(2019)Moving objects media data computing(2019)
Moving objects media data computing(2019)
 
Moving Objects and Spatial Data Computing
Moving Objects and Spatial Data ComputingMoving Objects and Spatial Data Computing
Moving Objects and Spatial Data Computing
 
세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석
세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석
세월호/ 타이타닉호 사고의 빅 데이터 방법론적 분석
 
[공간정보시스템 개론] L03 지구의형상과좌표체계
[공간정보시스템 개론] L03 지구의형상과좌표체계[공간정보시스템 개론] L03 지구의형상과좌표체계
[공간정보시스템 개론] L03 지구의형상과좌표체계
 
[공간정보시스템 개론] L02 공간정보와 지리정보
[공간정보시스템 개론] L02 공간정보와 지리정보[공간정보시스템 개론] L02 공간정보와 지리정보
[공간정보시스템 개론] L02 공간정보와 지리정보
 
[공간정보시스템 개론] L01 공간정보시스템개요
[공간정보시스템 개론] L01 공간정보시스템개요[공간정보시스템 개론] L01 공간정보시스템개요
[공간정보시스템 개론] L01 공간정보시스템개요
 
[공간정보시스템 개론] L12 공간정보분석
[공간정보시스템 개론] L12 공간정보분석[공간정보시스템 개론] L12 공간정보분석
[공간정보시스템 개론] L12 공간정보분석
 
[공간정보시스템 개론] L11 공간정보의 구축
[공간정보시스템 개론] L11 공간정보의 구축[공간정보시스템 개론] L11 공간정보의 구축
[공간정보시스템 개론] L11 공간정보의 구축
 
[공간정보시스템 개론] L10 수치표고모델
[공간정보시스템 개론] L10 수치표고모델[공간정보시스템 개론] L10 수치표고모델
[공간정보시스템 개론] L10 수치표고모델
 
[공간정보시스템 개론] L09 공간 데이터 모델
[공간정보시스템 개론] L09 공간 데이터 모델[공간정보시스템 개론] L09 공간 데이터 모델
[공간정보시스템 개론] L09 공간 데이터 모델
 
[공간정보시스템 개론] L08 gnss의 개념과 활용
[공간정보시스템 개론] L08 gnss의 개념과 활용[공간정보시스템 개론] L08 gnss의 개념과 활용
[공간정보시스템 개론] L08 gnss의 개념과 활용
 
[공간정보시스템 개론] L07 원격탐사의 개념과 활용
[공간정보시스템 개론] L07 원격탐사의 개념과 활용[공간정보시스템 개론] L07 원격탐사의 개념과 활용
[공간정보시스템 개론] L07 원격탐사의 개념과 활용
 
[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해
 
[공간정보시스템 개론] L05 우리나라의 수치지도
[공간정보시스템 개론] L05 우리나라의 수치지도[공간정보시스템 개론] L05 우리나라의 수치지도
[공간정보시스템 개론] L05 우리나라의 수치지도
 
Swift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extensionSwift 3 Programming for iOS : extension
Swift 3 Programming for iOS : extension
 
Swift 3 Programming for iOS : Enumeration
Swift 3 Programming for iOS : EnumerationSwift 3 Programming for iOS : Enumeration
Swift 3 Programming for iOS : Enumeration
 
Swift 3 Programming for iOS : subscript init
Swift 3 Programming for iOS : subscript initSwift 3 Programming for iOS : subscript init
Swift 3 Programming for iOS : subscript init
 
Swift 3 Programming for iOS: error handling
Swift 3 Programming for iOS: error handlingSwift 3 Programming for iOS: error handling
Swift 3 Programming for iOS: error handling
 

Swift 3 Programming for iOS

  • 1. Swift Tour 군산대학교 컴퓨터정보통신공학부 컴퓨터정보공학전공 남 광 우 kwnam@kunsan.ac.kr Swift 3 Tour and Language Guide by Apple 꼼꼼한 재은씨의 Swift 2 프로그래밍
  • 2. Swift 개요 • Apple의 Mac OS X와 iOS용 응용 개발을 위해 개발 된 언어 • 2014년 6월 2일 WWDC 2014에서 발표 • App 개발시 Objective‐C를 대체하기 위한 언어 • LLVM 등 최신 프로그래밍 언어 기능 포함
  • 3. Swift 특징 • 데이터 타입 추론 • Java script, python 과 같은 dynamic binding 언어 아님 • C, C++과 같은 static binding 언어 • 그러나, 데이터 타입 추론 기능 등을 이용하여 dynamic binding 처럼 유연성을 제공
  • 4. • LLVM( Low‐Level Virtual Machine) • LLVM 채택으로 인한 비교적 빠른 성능 • 안정성(Safe)   : Objective‐C 대비 • Array Bounds check기능 • 포인터 직접 접근 차단 기능 • 현대적(Modern) • Optional, Generics, Closure, Tuple  등 현대적 기능 제공 Swift 특징
  • 5. Hello World in Swift print( “ Hello World “) • Hello World 하기 • main() 함수가 필요없음
  • 6. Swift의 문법적 특성 • Header 파일을 작성할 필요가 없음 • *.h   *.c  와 같이 전처리를 위한 헤더파일 구분 불필요 • 변수 선언과 상수 선언의 구분 • Swift는 대소문자를 구분 • let A = 30 • let a = 40 var a : Int //변수선언 let A = 4      // 상수선언 a = 5
  • 7. Swift의 문법적 특성 • 문장 끝의 세미콜론(;)은 옵션 • main() 함수가 없음 • @UIApplicationMain 어노테이션 사용 • 문자열 뿐만 아니라 문자도 큰 따옴표 print( “hello” ) print( “hello2”) ; var str : String = “Hello” var ch : Character = “H”
  • 8. Simple Values • 변수와 상수의 선언 • 타입의 추정 var myVariable = 42  // 변수 myVariable = 50 let myConstant = 42 // 상수 let implicitInteger = 70 let implicitDouble = 70.0 let explicitDouble: Double = 70
  • 9. Simple Values • 서로 다른 타입 값의 변환 • 변수 상수의 이름은 한글 한자도 가능 let label = "The width is " let width = 94 let widthLabel = label + String(width) var 한글변수 = 3 let ㅎㄱㅂㅅ = 5.3
  • 10. 기본 자료형 • Int • Int8, Int16, Int32, Int64 • Uint • UInt8, UInt16, UInt32, UInt64 • Double & Float • Bool • String • Character
  • 11. 기본 자료형 • 자료형의 선언과 사용의 세가지 방법 // first var day = 7 // second var day : Int day = 7 //  third var day : Int = 7 // 다음은 error!!!! var day  day = 7
  • 12. 닫힌 범위 연산자 • 범위 값을 나타내는 연산 • 1…5  : 1, 2, 3, 4, 5 • 1..<5 : 1, 2, 3, 4 • for 문에서의 사용 • hello 100번 print 하기 for  i in 1…100 { print( “Hello” ) }
  • 13. 문자열 template • 변수, 상수 값을 대입하기 위한 template • (이스케이프) 문자의 사용 • hello world  1..<100 까지 번호와 함께 찍기 let apples = 3 let oranges = 5 let appleSummary = "I have (apples) apples." let fruitSummary = "I have (apples + oranges) pieces of fruit.
  • 15. 배열의 선언 let emptyArray = [String]() let emptyDictionary = [String: Float]() • empty 배열의 선언 • 배열 사용의 예 • 배열의 값을 print하기
  • 16. 흐름 제어 : For 구문 • for 구문의 구조 • ; 생략가능 for( 초기값;  비교값; 증가값)  { { for var i = 0; I < 10; i++  { print( “ (i) 번째 실행“) {  for (var i = 0; I < 10; i++) { print( “ (i) 번째 실행“); {  Swift 2 O;Swift 3 X
  • 17. 흐름 제어 : For 구문 • if 문과 함께 사용 • for ~ in 구문에서 루프상수의 생략 • 아래에서 변수 i는 필요없음 • 그러므로 _ 로 대체 가능 for ( var i = 0 ; ; i++ ) { if ( i>= 10 ) break; } for  i in 1…100 { print( “Hello” ) } for  _  in 1…100 { print( “Hello” ) } Swift 2 O;Swift 3 X Swift 2 O;Swift 3 O