이상하게 옵셔널 체이닝이 너무 너무 헷갈려서 공식문서를 보고 정리해보았다.옵셔널 체이닝이란, 옵셔널의 프로퍼티, 메서드, 서브스크립트를 불러올 때 사용되는 방법이다. 옵셔널이 값을 가지면 옵셔널의 프로퍼티, 메서드, 서브스크립트 불러오기 성공, 옵셔널이 nil이라면,
서로 연관된 값들을 하나의 그룹으로 묶어 타입으로 만들 때 열거형을 쓴다.raw value 원시값 \- 원시값을 모든 case에 설정해주지 않아도 된다. \- string, character, integer, float 타입... 가능 associated valu
Hashable이 무엇이고,Hashable은 Equatable을 왜 상속해야할까?Hash가 될 수 있다 == HashTable에서 찾을 수 있다 (자신의 해시값을 찾을 수 있어야 한다)해시테이블에서 해시값(Hash Value)을 찾으려면 key로 찾아야 하는데 그 ke
수정 (쓰기) 이 일어날 때 복사한다는 뜻참조를 통해 불필요한 복사를 줄여서 메모리를 절약할 수 있다.변수 a에 담긴 컬렉션타입을 다른 변수인 b에 할당할 때 바로 복사가 일어나지 않고다른 변수인 b가 수정이 될 때 그제서야 복사가 일어난다.그럼 수정이 일어나기 전까지
Struct, Enum, String, Dictionary, Set, Tuple변수에 할당하면 스택 영역에 값이 저장됨변수를 다른 변수에 복사한 후 복사본을 변경하더라도 원본에 영향을 주지 않는다Class, Closure스택 영역에는 포인터(레퍼런스)만 할당되고 실제
내가 작성하고 있는 코드의 성능을 향상시키려면 항상 다음과 같은 질문을 염두해 두어야 한다.인스턴스가 스택에 저장될까 힙에 저장될까?인스턴스를 전달시 RC 는 얼마나 증가될까?인스턴스의 메서드는 static, dynamic 중에 어떻게 dispatch될까?스택 영역에
네트워크 연결이 끊어진 오프라인 환경에서 데이터 변경사항이 생길 경우 먼저 Local에 저장한 후에, 네트워크가 다시 연결되면 Local의 변경사항을 Remote에 업데이트하는 방식으로 구현하였다. Remote에서 변경이 일어날 가능성은 없으므로 Remote변경사항