타입캐스팅(Type Casing) 타입캐스팅은 해당 인스턴스를 고유한 클래스 계층 구조의 다른 슈퍼클래스나 서브클래스로 처리하는 방법을 뜻합니다. 연산자로는 as, as?, as! 가 존재하고 이들의 개념에 대해 알아보도록 하겠습니다. 다운캐스팅 (Downcasting) -> 부모클래스에서 자식클래스로 형변환하는것을 다운캐스팅이라고합니다. 쉽게말해서 자식클래스의 프로퍼티와 메소드를 사용하기 위해서 다운캐스팅을 하는겁니다. 다운 캐스팅에는 2가지 연산자가 존재한다. as? : 강제 타입 변환 시도. 변환이 성공하면 Optional 값을 가지며, 실패 시에는 nil 반환 as! : 강제 타입 변환 시도. 성공 시 언래핑 된 값을 가지며, 실패 시 런타임 에러 발생 class Shape { var color ..
Swift의 TypeCheck 방법중에 타입을 확인하는 type(of:)와 타입을 비교하는 is에 대해 알아보도록 하겠습니다. 타입 체크(TypeCheck) 스위프트의 타입캐스팅은 is와 as로 구현되어있고, 인스턴스의 타입을 확인하거나 자신을 다른 타입의 인스턴스인것처럼 사용될 수 있습니다. type(of:) - 타입확인 class className {} var anyArray: [Any] = [1, "2", 3.9] var anyObjectArray: [AnyObject] = [className()] func printGeneric(_ value: T) { let types = type(of: value) print("\(value) of type \(types)") } printGeneric(2) ..
Capturing에 대해 알아 보겠습니다. CaptureList 클로저는 정의 된 주변 컨텍스트에서 상수 및 변수를 캡처(Capturing) 할 수 있습니다. 그런 다음 클로저는 상수와 변수를 정의한 원래 범위가 더 이상 존재하지 않더라도 본문 내에서 해당 상수와 변수의 값을 참조하고 수정할 수 있습니다. Value Type Capture var a = 1 var b = 2 var c = 3 var result = 0 // 1,2,3,0 print("초기화 값 :", a, b, c, result) print("a, b 만 캡쳐") let valueCapture = { [a,b] in result = a + b + c print("내부 : ", result) } //1번째 호출 valueCapture() ..
클로저 클로저란 특정 기능을 담은 코드를 블럭으로 모아둔 형태이자, 일급 객체로 완벽한 역할을 할 수 있습니다. 일급 객체란 전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며, 함수의 반환 값이 될 수도 있습니다. 실제 우리가 알고 있는 함수는 클로저의 한 형태로, 이름이 있는 클로저입니다. 기본 형태 { (매개 변수들) -> 반환 타입 in 실행 코드 } Basic Closure let simpleClosure = { print("This is SimpleClosure!!") } simpleClosure() let closureParameter = { (str: String) -> Int in return str.count } let count = closureParameter..
옵셔널(Optionals)에 대해 알아 보겠습니다. 옵셔널 옵셔널은 스위프트의 특징 중 하나인 안전성(Safe)를 담당하는 기능입니다. 다른 언어에서 볼 수 없었던 옵셔널이란 무엇일까요? 단어 뜻 그대로 옵셔널은 선택적인,즉 값이 있을수도 있고 없을 수도 있다는 뜻을 나타냅니다. 이는 변수나 상수에 나타낼 수 있는데 상수나 변수에는 꼭 값이 있다는 보장이 없죠? 값이 없을땐 nil일 수도 있다는 뜻입니다. 옵셔널? 다시 말하자면, swift에선 nil을 사용하기 위해선 옵셔널을 사용해야만 합니다. var name: String = "jinTonics" name = nil // 오류 위에 소스를 보시면 왜 nil을 넣는데 오류가 날까요? 답은 name이라는 변수가 옵셔널이 아니라서 그렇습니다. 옵셔널에서만..