💻 개발/TIL

[TIL] 22.05.26

고도고도 2022. 5. 26. 23:37

공부한 것

Swift 문법

알게된 것

1. 클래스와 구조체의 차이

1. 공통점

값을 저장할 프로퍼티를 선언할 수 있음
함수적 기능을 하는 메소드를 선언할 수 있음
내부 값을 .를 통해 접근할 수 있음
생성자를 사용해 초기 상태를 설정할 수 있음
Extension 을 사용하여 기능을 확장할 수 있음
Protocol 을 채택하여 기능을 설정할 수 있음

 

2. 차이점

- 클래스
참조 타입
ARC 로 메모리를 관리
상속 가능
타입 캐스팅 을 통해 런타임에서 클래스 인스턴스의 타입을 확인할 수 있음
deinit 을 사용하여 클래스 인스턴스의 메모리 할당을 해제할 수 있음
같은 클래스 인스턴스를 여러 개의 변수에 할당한 뒤에 값을 변경시키면 모든 변수에 영향을 줌 (메모리를 복사)

 

- 구조체
값 타입
같은 구조체를 여러 개의 변수에 할당한 뒤에 값을 변경시키더라도 다른 변수에 영향을 주지 않음 (값 자체를 복사)

 

import Foundation

class SomeClass {
    var count : Int = 0
    
    func info() {
        print(count)
    }
}

struct someStruct {
    var count : Int = 0
    
    func info() {
        print(count)
    }
}

var class1 = SomeClass()
var class2 = class1

// 같은 인스턴스를 참조할 경우 주소 값을 복사하므로 다른 변수에 영향을 줌
class1.count = 2
class1.info()
class2.info()

// 값 자체를 복사하므로 다른 변수에 영향을 주지 않음
var struct1 = someStruct()
var struct2 = struct1

struct1.count = 2
struct1.info()
struct2.info()

같은 인스턴스를 참조할 때 클래스는 모든 변수가 값이 변경되지만 구조체는 그렇지 않다.

공부할 것

Extension, Optional Chaining

느낀 점

하고 싶은 것을 하자

 

'💻 개발 > TIL' 카테고리의 다른 글

[TIL] 22.06.03  (0) 2022.06.03
[TIL] 22.05.27  (0) 2022.05.27
[TIL] 22.05.26  (0) 2022.05.26
[TIL] 22.04.20  (0) 2022.04.20
[TIL] 22.04.18  (0) 2022.04.18
[TIL] 22.04.17  (0) 2022.04.17