분류 전체보기
[Swift] 옵셔널 체이닝(Optional Chaining)
💡옵셔널 체이닝 (Optional Chaining) 옵셔널에 값이 있다면 프로퍼티, 메서드, 서브스크립트 등을 호출할 수 있고, 옵셔널이 nil이라면 nil을 반환합니다. 이러한 옵셔널을 반복 사용하여 체인처럼 서로 꼬리를 물고 있는 모양을 옵셔널 체이닝이라고 합니다. 중첩된 옵셔널 중 하나라도 값이 존재하지 않는다면 결과적으로 nil을 반환합니다. 옵셔널 체이닝은 호출하고 싶은 옵셔널 변수나 상수 뒤에 물음표(?)를 붙여 표현합니다. 다음은 사람의 주소 정보 표현을 설계한 것입니다. 이를 사용하여 옵셔널 체이닝에 대한 예시를 들어보겠습니다~! // 호실 정보를 나타내는 클래스 class Room { var number: Int // 호실 번호 init(number: Int) { self.number =..
[TIL] 21. 01. 21
👑 오늘 한 일 스위프트의 옵셔널 체이닝에 대해 공부했다. 2021/01/22 - [Swift] - [Swift] 옵셔널 체이닝(Optional Chaining) 낮에 밖에 나갔다오고 저녁에는 동아리 프로젝트하느라 공부를 많이 하지 못했다😢 💡기억해야 할 것 옵셔널 체이닝은 중첩된 옵셔널 중 하나라도 값이 존재하지 않는다면 nil을 반환한다.
[TIL] 21. 01. 20
👑 Today I Learned Swift 클래스 상속과 클래스 이니셜라이저의 상속과 재정의에 대해 공부하였다. 💡기억해야 할 것 프로퍼티 감시자를 재정의하더라도 조상클래스에 정의한 프로퍼티 감시자도 동작한다. 자식클래스의 지정 이니셜라이저는 부모클래스의 지정 이니셜라이저를 반드시 호출해야 한다. 편의 이니셜라이저(convenience init)는 자신을 정의한 클래스의 다른 이니셜라이저를 반드시 호출해야 한다. 자식클래스에서 별도의 지정 이니셜라이저를 구현하지 않았다면, 부모클래스의 지정 이니셜라이저가 자동으로 상속된다. 자식클래스에서 이니셜라이저 자동 상속의 규칙에 부합하지 않는다면(지정이니셜라이저 구현) 요구 이니셜라이저(required)를 반드시 구현해주어야 한다. 🧐느낀 점 상속은 헷갈리는 부분..
[TIL] 21. 01. 19
👑 Today I Learned 스위프트에서 잘 이해하고 넘어가야되는 클로저에 대해 공부했다. 2021/01/16 - [Swift] - [Swift] 클로저(Closure) 💡기억해야 할 것 클로저는 참조 타입이며 일급 객체이다❗️ 🧐느낀 점 스위프트는 뒤로 갈수록 너무 어렵당.. 예제 코드에 분명 내가 공부했던 내용이 나와있었지만 기억이 잘 나지않았다. 책을 여러번 보거나 직접 코드를 짜면서 활용해봐야 머리에 쏙쏙 박힐 것 같은데... 일단 쓱쓱 훑어보고 코드를 따라쳐보는 중이다!
[Swift] 클로저(Closure)
💡클로저 (Closure) 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것입니다. 일급 시민(first-citizen)으로, 전달인자, 변수, 상수 등으로 저장, 전달이 가능합니다. 참조 타입입니다. 함수는 클로저의 일종으로, 이름이 있는 클로저입니다. 📌일급 객체(first-citizen)란? 전달인자로 전달할 수 있으며, 변수나 데이터 구조 안에 담을 수 있고 반환값으로 사용할 수 있는 객체을 말합니다. 🔥클로저 표현방법 { (매개변수들) -> 반환 타입 in 실행 코드 } 🔥클로저의 사용 // sum이라는 상수에 클로저 할당 let sum: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let sumResult: Int = sum(1, 2..
[TIL] 21. 01. 15
👑 Today I Learned 며칠 어디 갔다 오느라 TIL을 적지 못했다,,ㅠ가기 전에 이니셜라이저에 대해 공부했던 것을 오늘 마무리했다.사용자 정의 이니셜라이저, 기본 이니셜라이저, 멤버와이즈 이니셜라이저, 초기화 위임 그리고 디이니셜라이저까지 공부했다. 블로그에는 디이니셜라이저를 올리지 않았지만 나머지는 정리해서 올렸다. 2021/01/11 - [Swift] - [Swift] 이니셜라이저(Initialization) 💡기억해야 할 것 사용자 정의 이니셜라이저를 구현하지 않았을 때 기본 이니셜라이저와 멤버와이즈 이니셜라이저를 사용할 수 있다. 멤버와이즈 이니셜라이저는 구조체에서만 사용 가능하다. 디이니셜라이저는 클래스의 인스턴스에만 구현 가능하다. 초기화 위임은 값 타입인 구조체와 열거형에서만 구현..
[Swift] 이니셜라이저(Initialization)
💡이니셜라이저 (Initialization) 이니셜라이저를 정의하면 초기화 과정을 직접 구현할 수 있습니다. 그렇게 구현된 이니셜라이저는 새로운 인스턴스를 생성할 수 있는 특별한 메서드가 됩니다. 스위프트의 이니셜라이저는 반환 값이 없습니다. 이니셜라이저는 init 키워드를 사용하여 이니셜라이저 메서드임을 표현합니다. 기본적인 형태의 이니셜라이저는 다음과 같습니다. class SomeClass { init() { // 초기화할 때 필요한 코드 } } struct SomeStruct { init() { // 초기화할 때 필요한 코드 } } enum SomeEnum { case someCase init() { // 열거형은 초기화할 때 반드시 case중 하나가 되어야 합니다. self = .someCase ..
[Swift] 메서드(Method) - 타입 메서드
💡타입 메서드 타입 메서드는 타입 자체에 호출이 가능한 메서드를 말합니다. 메서드 앞에 다음과 같은 키워드를 사용하여 타입 메서드임을 나타내줍니다. 구조체 - static 클래스 - static(상속 후 메서드 재정의 불가능), class(상속 후 메서드 재정의 가능) class AClass { static func staticTypeMethod() { print("AClass staticTypeMethod") } class func classTypeMethod() { print("AClass classTypeMethod") } } class BClass: AClass { /* // 오류 발생! 재정의 불가! override static func staticTypeMethod() { } */ overri..
[Swift] 메서드(Method) - 인스턴스 메서드
💡 메서드(Method) 메서드는 특정 타입에 관련된 함수를 뜻합니다. 클래스, 구조체, 열거형 등 👉 실행하는 기능을 캡슐화한 인스턴스 메서드 정의 가능 👉 타입 자체와 관련된 기능을 실행하는 타입 메서드 정의 가능 💡인스턴스 메서드 인스턴스 메서드는 특정 타입의 인스턴스에 속한 함수를 뜻합니다. 특정 타입 내부에 구현할 수 있으며 인스턴스가 존재할 때만 사용할 수 있습니다. class LevelClass { // 현재 레벨을 저장하는 저장 프로퍼티 var level: Int = 0{ // 프로퍼티 값이 변경되면 호출하는 프로퍼티 감시자 didSet { print("Level \(level)") } } // 레벨이 올랐을 때 호출할 메서드 func levelUp() { print("Level Up!")..
[TIL] 21. 01. 09
👑 Today I Learned Swift 인스턴스 메서드에 대해 공부하고 블로그에 포스팅했다. 2021/01/09 - [Swift] - [Swift] 메서드(Method) - 인스턴스 메서드 💡기억해야 할 것 자신의 프로퍼티 값을 수정할 때 클래스의 인스턴스 메서드는 크게 신경 쓸 필요가 없지만, 구조체나 열거형 등은 값 타입이므로 메서드 앞에 mutating 키워드를 붙여서 해당 메서드가 인스턴스 내부의 값을 변경한다는 것을 명시해야 한다. 🧐느낀 점(이 아닌 듯..?) 주말은 아침부터 저녁까지 알바 가는 날이어서 또 새벽에 공부했다. 🌙 피곤한 상태였지만 조금이라도 공부를 하고 자고 싶어서 했는데 눈이 반쯤 감긴 것 같다.. 문법 공부를 하면서 느낀 건 용어들이 너무 헷갈린다는 것이다...!!!🤯 ..