ARC란? ARC란 Automatic Reference Counting으로 스위프트의 메모리 관리 기법이다. ARC에 대해서 살펴보기 전에 잠시 참조 타입에 대해서 생각해보자. 클래스의 인스턴스(참조 타입)를 생성하게 되면 Heap이라는 메모리 공간에 인스턴스의 타입 정보, 저장 프로퍼티의 값 등이 저장되고, Stack이라는 공간에 메모리의 주소가 저장된다. Heap에 대해서 간단히 얘기하자면.. 더보기 프로그래머가 직접 할당/해제를 통해 관리하는 메모리 공간 런타임 시에 결정되기 때문에 데이터의 크기가 확실하지 않을 때 사용 참조 타입의 값들은 전부 힙에 할당됨 하지만 직접 할당/해제를 하므로 스택보다는 속도가 느림 이후에 인스턴스가 더 이상 필요없게되면 사용하던 메모리 공간(힙)을 다시 사용할 수 있..
접근 제어 접근 제어를 사용하면 다른 소스파일들과 모듈들로부터 내 코드로의 접근을 제한할 수 있다. 또한 접근 제어를 사용하면 코드의 상세 구현을 숨기고 허용된 기능만 사용하는 인터페이스를 제공할 수 있음. 그렇다면 이 접근 제어를 왜 사용해야할까. 때로는 전체 코드가 아닌 필요한 부분만 제공해야하는 경우가 있다. 즉, 외부에서 접근하면 안되는 코드가 있는데 접근을 막지 않는다면 예상과 다른 결과를 얻게 될 수도 있다. 또한, 8월 27일 TIL에서 적었듯이 클래스같은 Dynamic Dispatch의 경우 컴파일 단계가 아닌 런타임 과정에서 호출되는 메서드들이 결정되므로 확인하는 작업이 많아지면 성능이 저하된다. 이때, private과 fileprivate같은 접근 수준 키워드를 이용해 Dynamic D..
옵셔널이란? 값이 있을 수도, 없을 수도 있음을 나타내는 표현. 즉, 변수나 상수의 값이 nil일 수도 있다는 의미이다. ※ nil이란? 값이 없는 것을 의미하는데, 주의할 것은 0, ""(빈 문자열) 등의 값들도 하나의 값이므로 nil이라고 생각하면 안된다. 또한 nil은 옵셔널로 선언된 곳에서만 사용할 수 있다. 아래의 예시를 보자. String과 String? 타입은 철저히 다른 타입으로 취급되며, 옵셔널타입으로 선언된 변수에만 nil이 사용되는 것을 볼 수 있다. ______________________________________________________________________________________________________ 그렇다면 언제 옵셔널을 사용하며, 왜 옵셔널을 사용할..
튜플이란? 타입의 이름이 따로 지정되어 있지 않은 타입. 즉, 지정된 데이터의 묶음이라고 할 수 있다. 튜플은 타입 이름이 따로 없기 때문에 일정 타입의 나열만으로 튜플 타입을 생성해줄 수 있다. 우리는 흔히 변수를 선언할 때, 타입을 명시해준다. 이를 타입 어노테이션이라고 한다. 예를 들어보자. a라는 문자열 타입의 변수를 선언할 때, 아래와 같이 String이라는 타입을 같이 명시해준다. var a: String = "heecheol" 하지만 타입 이름이 따로 없는 튜플의 경우는 어떻게 생성해주어야할까? 튜플은 프로그래머 마음대로 만드는 타입이라고 생각하면된다. 튜플에 포함될 데이터의 수 또한 자유롭게 정할 수 있다. 아래의 코드를 보자. var heecheol: (String, Int, String..
프로그래머스에서 "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