본문 바로가기
2021_iOS [ Swift ]/강의 내용 정리

3주차 : Swift 문법 2(Optional, as, nil, Any, AnyObject, 연산자, 제어문1)

by 황민우 2021. 9. 15.

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 보다 커야하는 의미를 부여함.

댓글