iOS/Swift6 고차함수 고차함수란 다른 함수를 매개변수로 받거나, 함수 자체를 반환하는 함수Swift에서는 배열이나 컬렉션을 처리할 때 유용하게 사용됨 map배열의 각 요소에 주어진 변환 함수를 적용하여 새로운 배열을 반환filter배열의 각 요소 중 주어진 조건을 만족하는 요소들만 포함하는 새로운 배열을 반환reduce배열의 모든 요소를 주어진 클로저를 사용하여 하나의 값으로 합침forEach배열의 각 요소에 대해 특정 작업을 수행.새로운 배열을 반환하지 않고, 각 요소에 대해 작업만 수행flatMap배열의 각 요소에 대해 주어진 변환 함수를 적용하고, 중첩된 배열을 평평하게 펼쳐 하나의 배열로 반환compactMap배열의 각 요소에 대해 주어진 변환 함수를 적용하고, nil 값을 제거한 후 새로운 배열을 반환 2024. 8. 10. 동시성프로그래밍 동시성 프로그래밍(concurrency programming)은여러 작업을 동시에 실행하여애플리케이션의 효율성을 높이는 프로그래밍 방식동시성 프로그래밍을 통해 애플리케이션이여러 작업을 병렬로 처리할 수 있게 되어,특히 네트워크 요청, 파일 입출력, 대용량 데이터 처리와 같이시간이 많이 소요되는 작업을 효율적으로 관리할 수 있음동시성 프로그래밍의 주요 개념스레드(Thread)가장 기본적인 동시성 프로그래밍의 단위프로세스 내에서 독립적으로 실행되는 흐름으로, 여러 스레드가 동시에 실행될 수 있음태스크(Task)실행할 작업의 단위스레드는 이러한 태스크들을 동시에 혹은 병렬로 처리하여 프로그램의 실행 속도를 향상시킴동기화(Synchronization)여러 스레드나 태스크가 동시에 같은 데이터에 접근할 때발생할 .. 2024. 5. 24. 프로세스, 쓰레드 프로세스와 멀티프로세스프로세스 (Process)프로세스는 실행 중인 프로그램의 인스턴스를 의미운영체제로부터 시스템 자원을 할당받는 작업의 단위운영체제는 각 프로세스에게 독립된 메모리 공간을 할당하며,프로세스 간의 메모리 공간은 기본적으로 다른 프로세스와 격리특징:독립성: 각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스의 메모리에 직접 접근할 수 없음상호작용: 프로세스 간의 통신은 주로 IPC(Inter-Process Communication) 메커니즘을 통해 이루어짐.예를 들면, 파이프, 소켓, 메시지 큐 등자원 할당: 운영체제는 각 프로세스에 CPU 시간, 메모리, 파일 디스크립터 등의 자원을 할당오버헤드: 프로세스 간의 전환(context switch)에는 비교적 큰 오버헤드가 발생멀티프.. 2024. 5. 23. 순환참조 strong 강한참조인스턴스의 주소값이 변수에 할당될 때,RC가 증가하면 강한참조strong을 별도로 선언하지 않아도, 디폴트값이 strongstong에는 순환참조 문제가 있음..순환참조두개의 객체가 서로가 서로를 참조하고 있는 형태ARC의 단점.. 강한 순환참조 발생 시 영구적으로 메모리가 해제되지 않을 수 있음강한 순환참조 예시 ⬇️class Person { let name: String var apartment: Apartment? init(name: String) { self.name = name } deinit { print("Person Deinit") }}class Apartment { let unit: String.. 2024. 5. 23. ARC 참조타입과 heap인스턴스, 클로저 등등 참조타입은 자동으로 heap에 할당힙에 할당?Class Dog { var name: String? init(name: String?) } self.name = name }}let choco = Dog(name: "Choco")실제 Dog 인스턴스는 힙에 할당되고,지역변수 choco는 스택에 할당됨스택에 있는 choco는 힙에 있는 인스턴스를 참조하고 있는 형태즉, choco안에는 힙에 할당된 인스턴스의 주소값이 들어가 있음힙영역의 인스턴스는 복사되지 않는다let bori = chocobori는 choco와 같은 힙 영역의 Dog 인스턴스를 가리키고 있음힙은 사용하고 난 후 반드시 메모리 해제를 해줘야 한다스택에 있는 choco와 bori가 함수 종료시점에 사라.. 2024. 5. 23. 메모리구조 메모리는 Code ,Data , Heap , Stack 영역으로 이루어짐.Code우리가 작성한 소스코드가 기계어 형태로 저장컴파일 타임에 결정되고,중간에 코드가 변경되지 않도록 Read-Only 형태로 저장Data전역변수, Static 변수가 저장프로그램 시작과 동시에 할당프로그램이 종료되어야 메모리가 해제실행 도중 변수 값이 변경될 수 있으니 Read-Write로 지정Heap프로그래머가 할당/해제하는 메모리영역malloc, calloc으로 힙에 메모리를 할당할 수 있으며, 이를 ‘동적 할당’이라고 함클래스 인스턴스, 클로저 같은 참조타입의 값들은 힙에 자동 할당사용하고 난 후 반드시 메모리 해제를 해줘야한다.그렇지 않으면? memory leak이 발생유일하게 런타임 시 결정되기 때문에 데이터의 크기가 .. 2024. 5. 21. 이전 1 다음