객체지향적 성격을 지닌 스크립트 스타일의 언어
옵씨에서와 같이 전처리에 필요한 헤더파일이 필요하지 않음
Interface
와 Implementation
을 통합해서 작성
var a = 30
var A = 40
a와 A는 서로 다른 변수이다.
함수와 메소드, 인스턴스 첫 글자는 소문자로
클래스, 구조체, 프로토콜등 객체의 첫 글자는 대문자로
쓰는게 관례이다.
@UIApplicationMain
어노테이션을 사용하는 객체를 지정해 앱을 시작한다.
@UIApplicationMain
이 붙은 객체는 하나뿐이어야 한다.
따라서 Character 타입을 반드시 명시해줘야한다.
import
키워드는 라이브러리, 프레임워크 참조용다른 객체를 호출할 때에는 프로젝트 범위의 네임스페이스가 제공되기 때문
// 한 줄 주석
/*
* 여러 줄 주석
* 입니다.
/*
주석 안에 주석 사용 가능
*/
*/ ????
초기에는 Optional로 처리했지만 Swift2에서부터 지원
let year = 1999
라는 변수가 있을 때 1999라는 int 형 숫자 데이터는 0x12345678 ~ 0x1234567b
까지 의 메모리 주소에 할당되어 있다.
따라서 year
라는 단어를 사용하면 컴파일러는 메모리 주소에서 year
에 연결된 0x12345678 ~ 0x1234567b
의 주소를 확인하고 저장된 값을 읽어와 1999
라는 데이터를 만들어 준다.
이러한 과정을 변수와 상수에 값을 저장한다고 생각한다.
상수
는 변하지 않는 값, 변수
는 변하는 값을 의미한다.
변수의 값을 바꿀 때는 처음 저장했던 값과 type이 일치해야한다.
변수는 선언과 초기화를 분리할 수 있다.
상수는 실수로 값이 변경되는 일을 방지하고, 값의 성격이 명확히 분류되어 관리하기 편하다.
상수는 선언과 동시에 초기화 되어야한다.
변수는 알파벳, 숫자, 언더바로 정의하는 것이 좋다.
숫자가 변수명 처음에 올 수 없다.
var abc+t // (x)
var class = 1 // (x)
var 😽 = 1 // (x)
var variable = 0 // (o)
Int는 [... -2, -1, 0, 1, 2 ...]등 마이너스 범위에서 0, 플러스 범위의 정수 값을 나타낼 때 사용된다.
8bit CPU를 가진 컴퓨터라면 2^8인 256개의 값 -128 ~ 127을 나타낼 수 있다.
Int는 Int8, Int16등 Int계열 서브 자료형들의 대표 자료형이당.
Int는 해당 컴퓨터의 CPU에 따라 자동으로 크기가 변하는 가변적인 자료형이다.
print(Int8.min) //-128
print(Int8.max) //127
print(Int16.min) //-32768
print(Int16.max) //32767
print(Int32.min) //-2147483648
print(Int32.max) //2147483647
// = Int.max
print(Int64.min) //-9223372036854775808
print(Int64.max) //9223372036854775807
Unsigned Integer의 줄임말로 부호없이 0과 양의 정수만 나타낸다. 따라서 Int에 비해 양수만 나타낼 경우 8bit 기준 0~255까지 효율적으로 나타낼 수 있다.
(Int 서브 자료형의 최대값 x 2) + 1
Double은 64bit 부동소수점 자료형, Float는 32bit의 부동소수점 자료형이다.
매우 정확하거나 매우 넓은 범위의 실수값의 경우 Double, 이외에는 Float가 사용된다.
Swift에서는 Float32와 64가 나눠져 있다.
typealias Float64 = Double
true와 false 두 논리값을 저장하기 위해 사용되며 보통 조건식에서 사용된다.
let success = true
let fail = false
문자열을 나타내는 자료형으로 옵씨의 NSString과 호환된다.
Swift에서 NSString을 사용하려면 import Foundation
을 해야한다.
한 개의 문자를 저장할 수 있는 단일 자료형
String과 마찬가지로 "" 큰 따옴표를 사용한다.
:Character
를 명시해주어야 한다.
let letter1 = "s" // String
let letter2: Character = "c" // Character
Typr Annotation이란 변수나 상수를 선언할 때 그 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지 컴파일러에게 직접 알려주는 문법입니다.
하지만 Swift의 특성중 설계에 의한 안정성에 의해 타입 추론이 가능해집니다.
//타입 어노테이션 사용
var nameWithAnnotation: Character = "a" // Character a
var numWithAnnotation: Float = 1999 // 1999.0
//타입 추론
var nameWithInference = "a" // String 로 추론
var numWithInference = 1999 // Int 로 추론
타입을 맞춰줘야 결합이 가능하다.
var stmt = "내 몸무게는 "
var weight = 60
var weightStmt = stmt + String(weight) // 내 몸무게는 60
문자열 안에 다른 상수나 변수값을 포함시키는 방법
let year = 1996
let month = 1
let day = 3
let birthday = "내 생일은 \(year). \(month). \(day)입니다."
print(birthday)// 내 생일은 1996. 1. 3입니다.
/n (return feed)를 포함해 여러 줄의 문자열을 나타낼 수 있다.
let poem = """
계절이 지나가는 하늘에는
가을로 가득 차 있습니다.
나는 아무 걱정도 없이
가슴 속의 별들을
다 헬 듯 합니다.
"""
단항연산자
"-" : 부호를 바꿈
이항연산자
+,-,*,/,%
삼항연산자
let result = "a" == "a" ? true : false // result = true
"<" : 작다
">" : 크다
"<=" : 작거나 같다
">=" : 크거나 같다
"==" : 같다
"!=" : 다르다
"!" : NOT
"&&" : AND
"||" : OR
let myRange = 1...5 // 1,2,3,4,5
let myRange2 = 1..<5 // 1,2,3,4
"="
"+="
"-="
"*="
"/="
"%="
"<<="
">>="
"&="
"^"
"|="