반응형

Swift 15

5. iOS 강한참조(strong), 약한 참조(weak), 미소유 참조(unowned

5-1. 개요 저번 포스팅에서는 순환참조가 왜 일어나는지 포스팅을 했었는데 이번에는 순환참조가 일어나지 않게 할려면 어떻게 해야하는지에 대해 포스팅할 예정이다. Swift에서 Reference Type을 선언할 때 변수인지 상수인지를 결정하는 let과 var이란 키워드가 있는건 모두가 알고 있지만 이 키워드 앞에도 어떻게 참조할 것인지에 대해 정의해주는 키워드가 존재한다. 바로 strong과 weak와 unowned이다. 총 3가지인데 오늘은 참조 키워드에 대해 포스팅할 예정이다. 5-2. Strong(강한 참조) 개요에서 총 3개의 키워드가 있다고 했지만 swift에 strong이라는 키워드는 없다. 즉, 아무 키워드도 사용하지 않으면 강한 참조로 인식한다는 이야기이다. 강한 참조로 Reference ..

Swift 2022.07.28

4. iOS GC와 ARC의 차이점, 순환참조

4-1. 개요 iOS 메모리 관리 기법에 ARC가 있다면 타 언어에서는 GC(Garbage Collector)가 있다. 거의 비슷한 방식으로 동작하지만 둘의 차이점은 엄연히 존재한다. 오늘은 이 차이점에 대해 공부하고 순한 참조가 무엇이고 어떤 식으로 발생하는지 알아볼 예정이다. https://daesiker.tistory.com/104 4-2. GC(Garbage Collection) GC방식은 프로그램이 실행 중일 때 Garbage Collector라는 것이 동적으로 감시를 하고 있다가, 더 이상 사용할 필요가 없다고 여겨지는 인스턴스를 메모리에서 해제시키는 방식이다. ARC랑 비슷하지만 여기에는 몇가지 차이점이 있다. GC 참조 계산 시점 런 타임 프로그램을 실행하는 동안 주기적으로 검사하여 사용하..

Swift 2022.07.19

3. iOS 메모리 관리(ARC, MRC)

1. 개요 iOS의 메모리 영역 중 힙영역을 관리하는 방법은 2가지가 있다. ARC와 MRC란 기법이 있는데 Objective-C에서는 프로젝트 설정을 통해 MRC나 ARC 중 선택하여 사용할 수 있고 Swift에서는 ARC만 사용한다. 이번 포스팅에서는 이 2가지 메모리 관리 기법에 대해 알아볼려 한다. 1-1. ARC(Auto Reference Counting) ARC를 알아보기 전에 ARC가 어떤 메모리 영역을 관리하는 지 알아야한다. 바로 힙영역을 관리하는데 힙영역은 참조타입의 데이터를 관리하는 영역이다. 즉 클래스나 클로져를 메모리에 할당, 해제할 때 ARC를 사용한다 참조타입과 값타입 확인하기 ARC는 Auto Reference Counting의 약자로 힙영역에 할당돼있는 데이터를 참조하는 지..

Swift 2022.07.12

2. iOS 값타입(Value Type)과 참조타입(Reference Type)

2-1. 개요 타입은 데이터를 전달하는 방식에 따라 값타입(Value Type)과 참조타입(Reference Type)으로 나뉜다. 값 타입(Value Type) Struct Enum Tuple 참조 타입(Reference Type) Class Closure 대표적인 값타입으로는 구조체, 열거형, 튜플 등이 있고 참조타입은 클래스나 함수 등이 있다. 여기서 Struct와 Class를 이용해서 메모리에 어떻게 할당되고 해제되는지 알아볼 예정이다. 2-2. Class -Source Code class Human { var age:Int var name:String init(_ age: Int, _ name: String) { self.age = age self.name = name print("\(name)..

Swift 2022.07.05

1.iOS 메모리 구조

1. 개요 xCode를 통해 프로젝트를 만들어 시뮬레이터나 실제기기를 통해 실행을 시키면 해당 운영체제(OS)는 메모리(RAM)에 이 프로그램을 위한 공간을 할당해 준다. 총 4가지의 공간으로 나뉘어져 있는데 코드영역, 데이터 영역, 힙 영역, 스택 영역이 존재한다. 각 영역이 어떤 특징을 가지고 있는지 알아보자 ✱ 컴파일 타임(Compiletime) : 우리가 만든 소스코드가 기계어 코드로 변환되어 실행 가능한 프로그램이 되는 과정 ✱ 런 타임(Runtime) : 사용자에 의해 실행되어 지며, 응용프로그램이 동작되어지는 시간 1-1. 코드 영역 코드 영역은 프로그램의 소스코드가 기계어(Binary) 형태로 저장되는 영역이다. 컴파일 타임에 결정되고, 중간에 코드가 바뀌지 않도록 읽기전용(Read-Onl..

Swift 2022.06.28
반응형