![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dRQAyN/btrOGu5KEqh/dKKP120cIsymkTcbFAd4V1/img.png)
ARC란? ARC란 Automatic Reference Counting으로 스위프트의 메모리 관리 기법이다. ARC에 대해서 살펴보기 전에 잠시 참조 타입에 대해서 생각해보자. 클래스의 인스턴스(참조 타입)를 생성하게 되면 Heap이라는 메모리 공간에 인스턴스의 타입 정보, 저장 프로퍼티의 값 등이 저장되고, Stack이라는 공간에 메모리의 주소가 저장된다. Heap에 대해서 간단히 얘기하자면.. 더보기 프로그래머가 직접 할당/해제를 통해 관리하는 메모리 공간 런타임 시에 결정되기 때문에 데이터의 크기가 확실하지 않을 때 사용 참조 타입의 값들은 전부 힙에 할당됨 하지만 직접 할당/해제를 하므로 스택보다는 속도가 느림 이후에 인스턴스가 더 이상 필요없게되면 사용하던 메모리 공간(힙)을 다시 사용할 수 있..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/blr0kT/btrKOIM1q32/VnX7X64kTwNh5rXnZlVfhK/img.png)
접근 제어 접근 제어를 사용하면 다른 소스파일들과 모듈들로부터 내 코드로의 접근을 제한할 수 있다. 또한 접근 제어를 사용하면 코드의 상세 구현을 숨기고 허용된 기능만 사용하는 인터페이스를 제공할 수 있음. 그렇다면 이 접근 제어를 왜 사용해야할까. 때로는 전체 코드가 아닌 필요한 부분만 제공해야하는 경우가 있다. 즉, 외부에서 접근하면 안되는 코드가 있는데 접근을 막지 않는다면 예상과 다른 결과를 얻게 될 수도 있다. 또한, 8월 27일 TIL에서 적었듯이 클래스같은 Dynamic Dispatch의 경우 컴파일 단계가 아닌 런타임 과정에서 호출되는 메서드들이 결정되므로 확인하는 작업이 많아지면 성능이 저하된다. 이때, private과 fileprivate같은 접근 수준 키워드를 이용해 Dynamic D..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/m061V/btrGI0dGUYf/7097y9dc8oNw77EuES70kK/img.png)
옵셔널이란? 값이 있을 수도, 없을 수도 있음을 나타내는 표현. 즉, 변수나 상수의 값이 nil일 수도 있다는 의미이다. ※ nil이란? 값이 없는 것을 의미하는데, 주의할 것은 0, ""(빈 문자열) 등의 값들도 하나의 값이므로 nil이라고 생각하면 안된다. 또한 nil은 옵셔널로 선언된 곳에서만 사용할 수 있다. 아래의 예시를 보자. String과 String? 타입은 철저히 다른 타입으로 취급되며, 옵셔널타입으로 선언된 변수에만 nil이 사용되는 것을 볼 수 있다. ______________________________________________________________________________________________________ 그렇다면 언제 옵셔널을 사용하며, 왜 옵셔널을 사용할..
튜플이란? 타입의 이름이 따로 지정되어 있지 않은 타입. 즉, 지정된 데이터의 묶음이라고 할 수 있다. 튜플은 타입 이름이 따로 없기 때문에 일정 타입의 나열만으로 튜플 타입을 생성해줄 수 있다. 우리는 흔히 변수를 선언할 때, 타입을 명시해준다. 이를 타입 어노테이션이라고 한다. 예를 들어보자. a라는 문자열 타입의 변수를 선언할 때, 아래와 같이 String이라는 타입을 같이 명시해준다. var a: String = "heecheol" 하지만 타입 이름이 따로 없는 튜플의 경우는 어떻게 생성해주어야할까? 튜플은 프로그래머 마음대로 만드는 타입이라고 생각하면된다. 튜플에 포함될 데이터의 수 또한 자유롭게 정할 수 있다. 아래의 코드를 보자. var heecheol: (String, Int, String..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bJfWqY/btrD1fTLJPE/GChdkRbJdZeck8YHzdvl61/img.png)
프로그래머스에서 "3진법 뒤집기"라는 문제에서 다른 분의 답을 보고 진수 변환이 편리하게 가능한 것을 알게 되었다. 아래는 공식문서에 나와있는 정보이다. 위의 내용을 보면 알 수 있듯이 text를 integer 값으로 변환시킬 수 있는 메서드이다. radix는 2에서 36사이의 값이어야 하고, default는 10이라고 한다. x진수를 10진수로 평소에 문제를 풀다보면 String값을 Int로 바꾸는 경우가 많았다. 예를 들어 String값으로 주어진 "123"을 Int로 사용하고 싶을 땐 Int("123")을 사용하는데, 이것이 radix에 default값이 10이 들어가있던 것이다. 즉, Int("123", radix: 10)이 원래의 표현이지만 radix가 생략된 것이다. 이때 주의해야 할 것은 리..
- Total
- Today
- Yesterday