
여기서 모듈에 대해 내가 이해한 바로 흔히 iOS프로젝트를 생성할 때, proj아래에 있는 파일 모두가 모듈 안에 있다고 볼 수 있다. 그렇다는 건 proj 자체가 모듈이라고 생각했다.접근 제어자에 대한 설명은 접근의 정도가 넓은 쪽에서 좁은 쪽으로 설명한다.가장 접근

NSCache는 간단하게 메모리에 저장되는 객체를 관리하는 가변 컬렉션이다.메모리가 부족 할 시에 시스템이 자동으로 접근하여 저장된 객체를 임의로 제거가 가능하다.저장될 객체 개수 설정 가능바이트 단위로 저장될 사이즈 제한 가능NSCacheDelegate를 통한 제거

swizzling, 말 그대로 '휘젓기' 라는 의미를 가지고 있다.직역하자면, 함수 휘젓기 인데 의미는 다음과 같다.런타임 시점에 기존 메서드의 구현을 다른 메서드로 교체하여 동작을 변경하는 기법입니다.하는 일은 간단하다.바꿔치기로 함수가 실행 될 때마다 작성한 함수가
동시성 환경에서 data-race를 방지하고 여러 Thread간에 안전하게 값을 전달하기 위한 프로토콜Sendable을 준수하는 타입은 여러 Thread에서 동시에 접근하더라도 값을 안전하게 전달할 수 있음을 나타냄.값 타입은 인스턴스를 복사하여 전달되기 때문에 동시성
해당 도구로 선언된 코드 내에서 생성된 임시 객체를 관리하는 도구 + 참조 카운트가 감소되는 것을 미루어 나중에 감소되는 것을 보장방대한 임시 객체가 생성되는 경우메모리 관리예상을 해보자면 ARC가 각각의 UIImage 객체들이 함수가 끝나기 전까지는 reference
클래스 인스턴스의 메모리를 자동으로 관리해주는 시스템인스턴스의 참조 횟수 추적을 통한 관리클래스 인스턴스가 생성되면 해당 인스턴스의 참조 횟수(RC)를 1로 설정생성된 인스턴스를 다른 변수, 상수에 할당하면 참조 횟수는 증가할당 해제되면 참조 횟수 감소참조 횟수가 0이
클로저는 자신이 정의된 주변 환경의 변수나 상수를 캡처하여, 실행 시점에 값들이 존재하지 않더라도 클로저 내부에서 해당 값들에 접근 가능하게 하는 것위의 코드처럼 total, amount가 존재하지 않게 되더라도 여전히 동작.일단 기본적으로 두 타입은 Reference
ARC 시스템에서 weak 참조를 효율적이고 안전하게 관리하기 위해 도입된 구조 Swift의 객체 객체는 strong, weak, unowned 세 가지 참조 방식을 가진다. 이들 중 weak 참조만이 nil 값을 가질 수 있다. Side Table weak 참조되

객체의 참조(주소)만을 복사하는 방식참조 타입(Class 등등)에서 기본적으로 발생메모리 사용이 적고 빠름. (주소만 따라가면 되기 때문)복사된 객체와 원본 객체가 같은 인스턴스를 공유동시성 환경에서 관리 필요객체의 모든 속성과 하위 객체들까지 재귀적으로 복사하여 독립

some > 불투명 타입(Opaque Type)으로 내부의 구체 타입은 컴파일러가 알고 있으나, 외부에는 숨기는 프로토콜 왜 사용할까? 1. 구현 감추기 + 정적 디스패치 참고 https://www.avanderlee.com/swift/some-opaque-typ
virtual Function > C++에 존재하는 상속 가능성을 의미하는 함수 C++에 존재하는 virtual Function은 일반 함수와 다르게 런타임에 실 객체 타입에 따라 호출되는 함수 virtual Function으로 선언된 함수를 override할 때는

Swift에서 프로토콜 타입의 값을 저장하기 위해 사용하는 보이지 않는 내부 메모리 구조(상자)동적 디스패처가 프로토콜을 준수하는 객체의 함수의 호출 메모리 주소를 알기 위해서는 Witness Table이라는 함수 주소가 적혀 있는 테이블을 참조이 때, 실제 객체, W

앱이 생성하는 파일에 적용되는 암호화 수준을 정의하여 사용자 데이터를 안전하게 보호하는 iOS의 핵심 보안 기능애플의 기기들은 새로운 파일이 생성되면 그 파일을 생성한 앱이 각 파일에 클래스를 할당한다.각 클래스는 데이터 접근 시기를 결정하는 정책, 기능이 다르다.✨

Swift 5.9 버전부터 적용된 컴파일 시간에 코드 생성, 검증을 가능하게 해주는 기능텍스트를 추상 구문 트리 (Abstract Syntax Tree, AST) 인 구조화된 데이터로 변환해주는 라이브러리그냥 텍스트: let a = 1 + 2SwiftSyntax가 분석

애플 플랫폼에서 사용되는 로컬 데이터베이스 기능을 사용하기 위한 기술저장 측면: 앱 내 Container에서 폴더로 분류한 후, 저장 날짜, 수정된 날짜 등등의 데이터를 폴더 등으로 분류해서 저장할 필요가 있음.불러오기 측면: 원하는 데이터를 찾기 위해 해당 폴더에 접

클래스 타입에서만 사용할 수 있는 타입 메서드static 키워드를 사용한 것과 동일하게 전역에서 클래스 타입에 바로 사용할 수 있는 키워드static 키워드를 사용한 메서드와 동일하게 해당 타입을 직접 접근해 메서드 호출을 가능하게 하는 함수class 타입에서만 사용

Swift 컴파일러가 모듈 전체를 하나의 단위로 보고 최적화를 수행하는 기술 WMO (While Module Optimization) > 하나의 모듈 내의 소스 파일들을 한 번에 분석하여 최적화 하는 기술 동작 함수 인라인 다른 파일에 정의된 함수의 코드를 호출

이 타입의 레이아웃이 앞으로 변하지 않을 거라는 걸 알려주어 성능을 최적화해주는 속성 @frozen struct enum 에만 적용 가능 Library Evolution 모드가 켜진 상태에서 ABI 안정성과 컴파일러 최적화에 사용 Library Evolution

Linking > 컴파일된 여러 코드 조각들을 하나의 실행파일로 합치는 과정 프로그램이 빌드되는 과정 컴파일: 컴파일러가 각 소스 코드 파일을 목적 파일(.o)로 변환 링킹: Linker가 흩어져 있는 목적 파일들과 필요한 라이브러리들을 모아 하나의 실행파일로 연결