전체 글 76

iOS 메모리 관리와 최적화

메모리 관리는 iOS 앱 개발에서 중요한 주제 중 하나입니다. 메모리는 디바이스에서 정보를 저장하는 데 사용되는 모든 하드웨어를 포함하며, 앱이 실행될 때 실행 가능한 모든 명령어가 RAM에 로드됩니다. 이 때, 시스템은 Heap이라고 불리는 RAM의 일부를 클레임하며, 이곳에서 클래스의 모든 인스턴스가 앱이 실행되는 동안 생존합니다. 메모리 관리는 Heap 메모리의 생명 주기를 관리하면서 더 이상 필요하지 않은 객체가 해제되어 메모리를 재사용할 수 있도록 하는 과정을 의미합니다. iOS 디바이스의 메모리 제약과 앱 메모리 제한 iOS 디바이스의 메모리 제한은 디바이스의 RAM 용량에 따라 달라집니다. 예를 들어, iPhone XS부터 iPhone 13까지는 3GB 이상의 RAM을 가진 디바이스에서 사용..

iOS/Common 2024.04.01

Swift의 메모리 구조

Swift의 메모리 구조 Swift에서 메모리는 주로 네 가지 영역으로 나눌 수 있습니다. (1) 코드(Code) 영역 : 실행 가능한 프로그램 코드를 기계어 형태로 저장합니다. 이 영역은 읽기 전용(Read-Only)이며, 프로그램의 실행 중에 변경되지 않습니다. (2) 데이터(Data) 영역 : Swift 정적 변수, 상수, 타입 메타데이터 등을 저장합니다. 프로그램 시작과 동시에 할당되며 프로그램이 종료되면 메모리가 해제됩니다. 실행 도중 변경될 수 있습니다(Read-Write). var name: String = "FrenteBW" var age: Int = 25 struct Place { static let country: String = "Korea" } 위 코드에서 name, age, Pla..

iOS/Common 2024.03.29

CPU 아키텍처와 AP(Application Processor)

1. 캐시 메모리의 개념과 종류, 역할 캐시 메모리는 CPU와 주기억장치 간의 속도 차이로 인한 성능 저하를 막기 위해 사용되는 메모리입니다. CPU가 필요로 하는 데이터가 레지스터에 없는 경우, 주기억장치로부터 데이터를 읽어오기 위해 상당히 긴 시간을 기다려야 합니다. 캐시 메모리는 이러한 데이터 접근 시간을 줄여 속도를 향상시킵니다. 캐시 메모리는 속도와 용량에 따라 L1, L2, L3 캐시 등으로 분류되며, 숫자가 작을수록 용량이 작고 빠르며, 숫자가 클수록 용량이 크고 느립니다. CPU에 가까울수록 상위 레벨 캐시로 취급하며, 최하위 레벨 캐시의 경우 마지막 레벨을 의미하는 LLC(Last Level Cache)라고도 부릅니다. 2. CPU 아키텍처의 종류와 특징 - ARM과 x86 CPU 아키텍..

Computer Science 2024.03.27

iOS 운영체제: 프로세스, 스레드, 메모리 관리, 샌드박스 이해하기

1. 프로세스와 스레드의 차이점 iOS에서 실행되는 앱은 프로세스와 스레드라는 두 가지 주요 실행 단위를 가지고 있습니다. 프로세스는 실행 중인 프로그램의 인스턴스로, 각각 독립적인 메모리 공간을 가지고 있습니다. 반면, 스레드는 프로세스 내에서 실행되는 흐름의 단위로, 프로세스 내의 메모리 공간을 공유하며 실행됩니다. iOS에서의 프로세스와 스레드 관리 iOS에서는 GCD(Grand Central Dispatch)와 NSOperationQueue를 사용하여 스레드를 관리합니다. 이를 통해 개발자는 복잡한 스레드 관리를 피하고, 메모리 사용량을 최적화할 수 있습니다. GCD를 사용한 스레드 관리 예시 // GCD를 사용하여 백그라운드 스레드에서 작업 수행 DispatchQueue.global(qos: ..

iOS/Common 2024.03.27

[RxSwift] .subscribe { }와 .subscribe(onNext: { })의 차이

// .subscribe { } Observable.just("Tell me something~") .subscribe { (string: Event) in print(string.element) // Optional("Tell me something~") } .disposed(by: self.disposeBag) // .subscribe(onNext: { }) Observable.just("Tell me something!") .subscribe(onNext: { (string: String) in print(string) // Tell me something! }) .disposed(by: self.disposeBag) Q. '.subscribe { }' 형태와 '.subscribe(onNext: {..

[Swift] method는 class, struct, enum 중 어느 곳에 쓰는 게 좋은가

Q. Swift로 iOS Application을 개발할 때, method를 각각 class, sturct, enum 내부에 선언하는 방법과 각각의 장점을 설명해 줘 A. Swift에서 iOS 애플리케이션을 개발할 때, method를 class, struct, enum 내부에 선언하는 방법과 각각의 장점에 대해 설명해 드리겠습니다. 1. Class 내부에 선언하는 방법 - Class는 참조 타입이며, 상속이 가능합니다. - Method는 class의 인스턴스에 속하게 됩니다. - Class 내부에 선언된 method는 상속과 다형성을 활용할 수 있어 유연성이 높습니다. - Class의 인스턴스 간 데이터를 공유하고 변경할 수 있습니다. - Method는 인스턴스 속성에 접근할 수 있으므로 인스턴스의 상태를..

iOS/Common 2023.06.16

[Swift] static func와 그냥 func (feat. Singleton)

Q. iOS Application 개발 과정에서 static func와 func 사이에는 어떤 차이가 있으며, 성능 측면에서 어떤 것이 더 유리한지 Swift 예시 코드와 함께 설명해 줘 A. iOS 애플리케이션 개발에서 'static func'와 'func'의 차이는 주로 사용 방법과 메모리 관리 측면에서 나타납니다. 먼저 'func'은 인스턴스 메서드를 선언할 때 사용되며, 해당 메서드는 클래스의 인스턴스에 속합니다. 이는 해당 클래스의 각 인스턴스에 대해 개별적으로 호출할 수 있는 메서드입니다. 예를 들어, 다음은 'func'의 예시 코드입니다. class MyClass { func instanceMethod() { // 인스턴스 메서드 로직 } } let myObject = MyClass() my..

iOS/Common 2023.06.16

[번역] WWDC 2023’s Keynote Should Get iOS Developers Excited

Steven Curtis라는 런던에 계신 iOS 개발자분이신데, Medium에서 좋은 내용의 포스팅을 많이 해주십니다. Steven Curtis님의 포스팅 내용을 공부하는 김에 다른 분들께도 이 내용을 공유하면 어떨까 싶어서 부족한 영어실력이긴 하지만 번역을 해서 올려봅니다! 원문 링크: https://stevenpcurtis.medium.com/wwdc-2023s-keynote-should-get-ios-developers-excited-262686796742 WWDC 2023’s Keynote Should Get iOS Developers Excited 2023 is the year of iOS development stevenpcurtis.medium.com App Store가 15주년을 맞이하였..

iOS/Common 2023.06.06

PNG와 JPEG의 차이점

PNG(Portable Network Graphics) PNG(Portable Network Graphics) 파일은 래스터 이미지 파일의 일종입니다. 투명 또는 반투명 배경의 그래픽을 처리할 수 있어 웹 디자이너에게 특히 인기 있는 파일 유형입니다. 이 파일 포맷은 특허가 없으므로 라이선스 없이도 이미지 편집 소프트웨어를 사용하여 파일을 열 수 있습니다. PNG 파일의 장단점 PNG 파일의 장점 - PNG 파일은 수백 개가 아닌 수백만 개의 색상 옵션을 처리하므로 GIF보다 훨씬 더 디테일한 이미지를 저장할 수 있습니다. - PNG는 개방형 포맷입니다. 라이선스 없이도 다양한 프로그램에서 열고 편집할 수 있습니다. - PNG 이미지는 압축해도 데이터가 손실되지 않으며, 저장과 전송이 매우 간단합니다...

Computer Science 2023.05.03

메모리 관리와 가상메모리

메모리 관리(memory management) - 컴퓨터 메모리에 적용된 리소스 관리의 일종 - 프로그램의 요청이 있을 때 메모리의 일부를 해당 프로그램에 할당하고, 더 이상 필요하지 않을 때는 다시 사용할 수 있도록 할당을 해제하는 것 - 가상 메모리 시스템은 프로세스가 사용하는 메모리 주소를 실제 물리 주소와 구분한다. 이로써 프로세스를 구분하고 디스크 스왑 처리를 사용하여 효과적으로 사용할 수 있는 RAM의 양을 늘릴 수 있게 된다. 가상 메모리 관리자의 품질은 전반적인 시스템 성능에 큰 영향을 미친다. - 쓰레기 수집(garbage collection)은 프로그램을 위한 컴퓨터 메모리 리소스를 자동으로 할당하고 할당을 해제한다. 프로그래밍 언어 수준에서 일반적으로 추가되어 있는 것이며, 수동 메모..

Computer Science 2023.05.03