Statically = 컴파일할 때 결정이 된다.
Dynamically = 실행할 때 결정 된다.
Optional Int 형
int형 값을 저장, 값이 없음(nil)
Swift에서 기본 자료형은 nil 값을 저장할 수 없음 -> 옵셔널 타입 선언
사용하는 두 가지 방법
1, Int?
2, Int!
옵셔널 타입 강제 언래핑
1, Forced Unwrapping
옵셔널에 래핑된 값은 강제 언래핑으로 풀 수 있다.
옵셔널형 선언 : 자료형 뒤 ?
옵셔널 언래핑 : 변수명 뒤 !
ex )
var = x : int?
x = 10
print(x!)
2, Optional Binding
옵셔널에 할당된 값을 임시 변수 또는 상수에 할당
상수 : if let 상수명 = optionalName{}
변수 : lf var 변수명 = optionalName{}
여러 옵셔널 변수를 한번에 언래핑 할 경우
양 쪽의 let을 써주어야하며, 콤마로 구분지어야한다.
ex )
if let x1 = x, let y1 = y { ... }
옵셔널 사용이유?
옵셔널 타입만이 값을 갖지 않는 의미의 nil 값을 가짐.
상수나 변수가 값이 없는 상태가 존재한다면 옵셔널 타입으로 선언해야 한다
형 변환 [ as, as?, as! ]
- 상속관계가 있는 클래스들끼리만 타입 캐스팅 가능
- 자식 인스턴스를 부모 클래스로 형변환하는 것은 업캐스팅
- 부모 인스턴스를 자식 클래스로 형변환하는 것은 다운캐스팅
<다운캐스팅이 반드시 성공할 것 이라는 확신이 있을 때 = as!>
<다운캐스팅이 반드시 성공할 것 이라는 확신이 없을 때 = as?>
as? -> 안전하게 형변환에 성공 할 수 있지만 옵셔널 타입으로 반환됨
타입 검사
지정된 객체가 해당 클래스의 인스턴스인지 검사.
ex) 인스턴스 is 클래스
Any와 AnyObject
AnyObject (protocol)
- 범용 타입
- 상속관계가 아니라도 타입 캐스팅 가능한 타입
- 어떤 클래스의 객체도 저장 가능
- 클래스만 허용하며 구조체나 열거형은 허용하지 않음
Any
- 클래스, 구조체, 열거형, 함수타입도 가능
제어문
for-in 반복문
- for-in 반복문은 컬렉션 또는 숫자 범위 내에 있는 목록을 반복
- _로 참조체 생략 가능
while 반복문
- 지정된 조건을 만족할 때 까지 작업을 반복
repeat-while 반복문
- 반복문의 몸체는 적어도 한 번 실행
Continue 문
- 반복문에서 continue 문 이후의 모든 코드를 건너뛰고 반복문의 상단 시작 위치로 돌아감
if 문
- Swift에서 if문 다음 실행코드는 반드시 중괄호를 {} 사용해야한다.
if문 조건에서 콤마의 의미
ex )
if a < b, d > c
콤마는 b가 a보다 큼과 동시에 d가 c 보다 커야하는 의미를 부여함.
'2021_iOS [ Swift ] > 강의 내용 정리' 카테고리의 다른 글
5주차 : Swift 문법 4 [ 1급 객체(first class object), 클로저(closure), 클래스(class)] (0) | 2021.10.03 |
---|---|
4주차 : Swift 문법 3(guard, switch-case, where, 함수) (0) | 2021.09.25 |
튜플 [ Tuple ] (0) | 2021.09.09 |
변수[var] VS 상수[let] (0) | 2021.09.09 |
Swift 문법 [ Int, Double, Bool, Character, String ] (0) | 2021.09.09 |
댓글