분류 전체보기

iOS/iOS

[iOS] 2. 메모리 관리 1 - ARC (Automatic Reference Counting)

참조 타입과 힙 class Country { var name: String var capital: String init(name: String, capital: String) { self.name = name self.capital = capital } } let korea = Country(name: "Korea", capital: "Seoul") // korea는 지역변수라고 가정 Country라는 클래스를 korea라는 인스턴스로 생성하고 초기화 했다. 위와 같이 메모리에 저장 된다. 지역 변수인 korea는 스택에 할당되고, Country 인스턴스는 힙에 할당 된다. 스택에 있는 korea는 힙 영역에 있는 인스턴스를 "참조"하고 있는 형태이다. 따라서 korea 안에는 힙에 할당 된 인스턴스의 ..

iOS/iOS

[iOS] 1. 메모리 구조

메모리 구조 프로그램이 실행되면 OS는 메모리에 실행한 프로그램을 위해 아래와 같은 공간을 할당해 줌. 메모리 (RAM) 코드 영역 데이터 영역 힙 영역 스택 영역 코드 영역 우리가 작성한 코드가 기계어 형태로 저장 됨. - 컴파일 타임에 결정 됨. - Read-Only 형태로 저장 됨. ✅ 기계어 : 컴퓨터가 읽을 수 있는 가장 밑단의 언어. (0과 1로만 이루어져 있음.) 데이터 영역 전역변수, static 변수가 저장 됨. - 프로그램 시작과 동시에 할당 됨. - 프로그램이 종료 되어야 메모리가 해제 됨. - Read-Write로 저장 됨. struct Seongil { static let lastName: String = "Yeo" // static 변수 ➡️ 데이터 영역 } var address..

Swift/Swift 기본기

14. 생성자 (Initialization) - 4

Failable Initialization 만약 클래스, 구조체, enum에서 실패할만한 조건이 들어올 때 초기화를 하지 않도록 하려면 어떻게 해야할까? init? 키워드를 사용해서 init() 메소드를 작성하면 된다. init?() 메소드를 보면 현재 순위를 입력 받아와 갱신하는 메소드이다. 1보다 작은 순위는 없으므로 순위 값이 0이하일경우 nil을 반환하는 Failable init()을 작성했다. 초기화에 필요한 조건을 만족하지 않는 경우 nil을 리턴하면 된다. ✅ 위와 같이 같은 인자와 같은 이림을 가진 생성자는 공존할 수 없다. (non-failable / failable 둘 다 포함) 다른 생성자와 마찬가지로 슈퍼 클래스의 Failable init()도 하위 클래스에서 오버라이딩이 가능하다...

Swift/Swift 기본기

13. 생성자 (Initialization) - 3

클래스에서의 생성자는 값 타입에서의 생성자와 조금 다른데, Memberwise init을 제공하는 값 타입과 달리 클래스는 Memberwise init을 지원하지 않는다. 따라서 모든 클래스들의 프로퍼티는 초기화 과정에서 반드시 초기 값이 할당되어야 한다. ✅ 상속 받은 클래스가 있는 경우 상위 클래스들의 프로퍼티도 모두 초기 값이 할당되어야 한다. 지정 생성자 - Designated Initializer - 클래스에 지정된 모든 프로퍼티는 초기화 해야함. - 클래스 타입은 최소 하나 이상의 지정 생성자가 필요함. init (param) { // statements } 편의 생성자 - Convenience Initializer - 클래스 타입에만 지원하는 보조적인 생성자이다. - 옵셔널 타입이다. - 편..

여성일
'분류 전체보기' 카테고리의 글 목록 (23 Page)