본문 바로가기

IOS App Programming/Swift22

CollectionType 차이점 및 효율적인 사용 시점 알고리즘 문제를 풀다 보면 Array, Set, Dictionary 등 Collection Type 데이터들을 다루게 된다. 데이터 타입마다 각각의 특징들을 가지고 있어 같은 작업을 하더라도 효율성이 달라지게 된다. 데이터의 크기가 커질수록 알고리즘의 중요도와 더불어 데이터 타입 선택도 중요해지게 된다. 그래서 각 타입들의 특징 및 차이점, 언제 사용하면 좋을지 정리해 보았다. 각 데이터 타입의 사용법은 아래 Swift 공식 가이드 참고해 주세요. https://bbiguduk.gitbook.io/swift/language-guide-1/collection-types 각 데이터 타입의 차이점 공식 정의 먼저 Swift language guide에 적혀있는 데이터 타입 설명을 살펴보면 다음과 같다. 배열 .. 2024. 2. 22.
weak self 를 사용하지 않아도 되는 경우 결론적으로 클로저에서 weak self를 사용하지 않아도 되는 경우는 다음과 같은 두 가지가 있다. 1. non-escaping 클로저인 경우 2. DispatchQueue.main.asyncAfter 함수를 사용할 경우 escaping 클로저와 non-escaping 클로저 함수 파라미터로 전달된 클로저를 함수 실행이 종료된 후 실행되는 것을 함수를 탈출(escape)한다고 한다. 즉 escaping클로저는 파라미터로 전달된 클로저가 탈출하여 함수 종료 후에 실행되는 클로저를 의미한다. escaping non-escaping 실행 시점 함수 종료 후 함수 내에서 코드 호출 즉시 외부 저장 여부 가능 불가능 두 함수의 차이는 외부 저장 여부에 대해서도 다르다. non - escaping 클로저는 함수 외.. 2024. 2. 7.
ARC란? - 강한참조와 약한참조, [weak self] 메모리 공간 구조 알아보기 프로그램을 실행하게 되면 운영체제는 메모리에 프로그램을 위한 공간을 할당함 할당된 메모리 공간은 아래와 같이 코드영역, 데이터 영역, 힙 영역, 스택 영역으로 나누어져 있음 그림에 써져 있는 설명처럼 코드 영역: 실행한 프로그램의 코드를 기계어로 변환하여 저장하고 있음 (컴파일 타임 시 결정) 데이터 영역: 전역변수, static 변수 저장 (시작과 동시에 할당, 프로그램이 종료되어야 메모리 해제) 힙 영역 : 프로그래머가 동적으로 할당/해제하는 메모리 영역 (런타임 시 결정) 스택 영역: 지역 변수, 매개 변수 등이 저장되고 해당 변수를 사용하는 함수 종료 시 메모리 해제됨 (컴파일 타임 시 결정) ARC란? ARC란? Automatic Reference Counting의 약.. 2024. 1. 31.
[Swift] mutating 키워드란? Swift의 타입 분류 스위프트의 타입은 참조 타입과 값 타입으로 분류된다. - 참조 타입 : 클래스 - 값 타입 : 구조체, 열거형, 튜플 또한 스위프트의 기본 타입은 모두 구조체로 구현됐다. 즉 값 타입이다. 참조 타입과 값 타입의 차이는 값을 복사하는 과정에 있다. - Value Type(값 타입) : 새로운 복사본을 생성해 할당한다. 기존 인스턴스와 별개의 인스턴스가 생성됨 (깊은 복사가 이루어짐) - Reference Type (참조 타입) : 원본 데이터의 참조 값이 복사된다. 즉 기존의 인스턴스와 연결되어 있음 (얕은 복사가 이루어짐) Value Type(값 타입)의 인스턴스는 기본적으로 타입 내부 메서드에서 프로퍼티를 수정할 수 없다. => 이를 해결하기 위해 mutating이 사용됨 mu.. 2023. 5. 10.