본문 바로가기

전체 글

[iOS] About ARC(Automatic Reference Counting) 이번 게시글에선 ARC! 에 대해 알아보겠습니다.Swift의 메모리 관리 모델 ARCSwift에선 개발자가 메모리 관리를 일일이 신경쓰지 않아도 되도록 ARC를 사용해 자동으로 메모리를 관리합니다. 하지만 앞으로 소개해드릴 순환참조와 같은 메모리 누수 문제를 피하기 위해선 여전히 개발자들이 신경써야할 부분들이 있기에 이부분과 ARC를 함께 글을 적어보려 합니다. 그럼 우선.. ARCAutomatic Reference Counting의 약자입니다.의미 역시 영어 그래도 받아들여 주시면 되는데요, 자동으로 참조 횟수를 세어주는 기능입니다.참조라는 단어가 들어간 것으로 보아 값타입인 struct, enum엔 해당이 되지 않을 것 같고, class, 클로저에 해당될 것 같죠?또한, class와 클로저에 해당하는.. 더보기
[iOS] About Optional(옵셔널) Optioanl옵셔널은 Swift에서 값이 있을 수도 있고 없을 수도 있는 상황을 안전한게 처리할 수 있도록 돕는 기능입니다.!!변수 또는 상수의 값이 nil일 가능성을 나타내기 위해 사용되는 것이죠. 위의 공식문서에 나와있듯이기본적으로 열거형으로 구현되어있습니다. 1. .some(Value): 값이 있는 경우2. .none: 값이 없는 경우, 즉 nil var number: Int? = nil// orvar number: Int? 위의 형식처럼 ? 를 활용해 변수를 선언해줍니다.첫번째처럼 nil을 지정해도 되지만 두번째 예시처럼 nil을 지정하지 않더라도 nil이 자동으로 할당됩니다. 여기서 중요한 점은 옵셔널로 정의한 변수는 일반 변수와는 다르다는 것인데요var string1: String? = "i.. 더보기
[iOS] About Copy-On-Write(COW) 이번에는 COW라고 흔히 부르는 Copy-on-Write에 대해 알아보겠습니다. COW는 Swift에서 Collection Type을 복사해서 사용할 때 사용되는데요 예시 코드를 통해 설명해보겠습니다. 우선 이 개념을 확인해보기위해 메모리 주소를 출력해야하는데요! 주소를 출력하기위해 사용된 코드는 밑의 코드를 사용했습니다.func address(_ o: UnsafeRawPointer) -> String { let bit = Int(bitPattern: o) return String(format: "%p", bit)}   우선 list 하나를 생성하고, 이의 주소값을 출력해보겠습니다.var list1 = [1,2,3,4,5]print("list1의 주소:", address(list1))//결과값.. 더보기
[개인출시앱] 모닝글로리 개인정보 처리방침 모닝글로리 개인정보 처리방침모닝글로리는 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다.   제1조(개인정보의 처리목적)모닝글로리가 개인정보 보호법 제32조에 따라 등록․공개하는 개인정보파일의 처리목적은 다음과 같습니다. 제2조(처리하는 개인정보의 항목)① 모닝글로리는 개인정보 항목을 처리하고 있지 않습니다. 제3조(개인정보 파일의 현황)① 모닝글로리는 개인정보 파일, 쿠키 등 을 사용하지 않고, 저장하지 않습니다. 제4조(개인정보의 처리 및 보유 기간)① 모닝글로리는 개인정보 파일, 쿠키 등 을 사용하지 않고, 저장하지 않습니다. 따라서 이용자의 개인정보를 처리할 내용과.. 더보기
[iOS] About DI, DIP 이번 글에서는 DI와 DIP에 대해서 정리해보고자 합니다. Dependency Injection & Dependency Inversion Principal결합도를 느슨하게 되도록하고 의존관계 역전 원칙과 단일 책임 원칙을 따르도록 클라이언트 생성에 대한 의존성을 클라이언트의 행위로 부터 분리하는 것기존의 의존성을 개선해 의존성을 외부에서 주입하려고 함DI: collection of Patterns, TechniquesDIP: Guidline on how to create loosly coupled and easy to maintain software여기까지 키워드들에 대해서 간단히 적어봤구요, 좀 더 들어가보겠습니다. 우선..의존한다?라는 의미부터 풀어보죠. A가 B에 의존한다는 것은? B의 상태에 따라.. 더보기
[iOS] About Realm Swift에서 데이터를 저장하는 방식은 UserDefaults, CoreData, Realm 등이 있습니다. 우선, UserDefaults는 간단한 String, Int 등의 단일 데이터 저장에 적합하지만, 객체 형태로 여러 데이터를 저장하거나 관리하는 데는 한계가 있습니다. 반면, CoreData는 객체로 데이터를 저장할 수 있어 복잡한 데이터 관리가 가능하지만, Xcode를 통해 Entity를 생성하고 데이터를 읽거나 추가, 수정하는 과정이 다소 복잡하며 초기 설정이 번거롭습니다. 또한, 스레드 관리와 데이터 관계 설정이 필요해 개발 과정에서 추가적인 구현과 관리가 요구됩니다.이러한 이유로 저는 보다 간단하면서도 효율적인 데이터 관리를 위해 Realm을 선택하였습니다. 이제, Realm의 특징과 장점.. 더보기
[iOS] About 메모리 구조 이번엔 메모리 구조에 대해 살펴보고 흐름 살려서 다음 포스팅엔 ARC가 목표.!! 입니다. 레쓰고!! 자 우선메모리의 역할프로세스가 실행될 때, 필요한 데이터와 프로그램 코드를 저장하는 공간 메모리 계층구조메모리 계층 구조를 속도 순서대로 정렬해보겠습니다!- 레지스터: CPU 내부에 위치하며, CPU가 직접 접근하는 데이터 및 명령어를 저장- 캐시: CPU와 주기억장치 사이에 위치해, 자주 사용되는 데이터에 빠르게 접근 가능하게 해줌- RAM(주기억장치): 프로세스가 실행되는 동안 데이터, 프로그램 저장, 휘발성- 보조기억장치: 하드드라이브, SSD, 외부저장장치 등 데이터 영구적으로 저장, 속도는 느리지만 저장용량 큼  메모리 구조프로세스가 실행되면 OS에서는 메모리 공간을 할당해주는데요, 그 구조를 .. 더보기
[iOS] About StateObject, ObservedObject 이번 글에서도 좀 헷갈리는 친구들에 대해 정리해볼까 합니다.우리가 SwiftUI에서 MVVM구조로 코드를 짤 때, ViewModel 설정시, ObservableObject를 채택해줍니다.그다음, View에서 viewmodel이라는 인스턴스를 생성할 때, @ObservedObject 혹은 @StateObject를 붙여주어, viewmode이라는 개체내의  @Published로 선언된 프러퍼티가 변경되면 자동으로 UI를 업데이트 시켜줍니다.  그렇다면 차이점은...? 우선 눈으로 보는게 이해하는게 빠르기때문에..!@ObservedObject우선 @ObservedObjct 부터 확인해보면 상위뷰 변화 > 하위뷰 변화 > 상위뷰 변화 순서대로 변화를 주게 되면마지막 상위뷰 변화 때, 하위뷰의 값이 초기화 되는것.. 더보기