1️⃣ To do list
1주차 강의 커리큘럼 |
2️⃣ 코드카타 알고리즘
2024.03.06 - [Swift/Code Kata (알고리즘)] - [Swift|코드카타] (프로그래머스) #33. 약수의 개수와 덧셈 - 약수는 제곱근으로!
3️⃣ 배운 것
1. 프로퍼티(Property)
- 정의: 클래스, 구조체, 열거형 안에 있는 변수 또는 상수를 의미한다.
- 저장 프로퍼티(Stored Property) : 값을 저장하고, 인스턴스의 일부로서 그 값을 유지한다.
var x = 10
var y = 20
var z = 0
- 연산 프로퍼티(Computed Property) : 특정한 계산을 통해 값을 반환하며, 값을 저장하지 않고 필요할 때마다 새로 계산된다.
var sum: Int {
get { return x + y } // 연산하여 반환하도록 함
set { z = x + y } // 저장 프로퍼티에 저장함
}
=> 사용
// get 실행
print(sum) // 연산 프로퍼티인 sum을 읽으면 getter가 실행됨. 출력값: 30
// set 실행
sum = 1 // 연산 프로퍼티인 sum에 값을 쓰면 10 이라는 값이 setter의 파라미터로 넘어가 set 함수가 실행됨.
print(z) // 출력값: 40
데이터 타입
1. 기본 데이터 타입 (구조체로 구현되어 있음)
=> 숫자형(Int, Float, Double), 불형(Bool), 문자형(String, Character), 묶음(Tuple), 모든 타입(Any)
2. 사용자 정의 데이터 타입
=> 구조체(Structures), 클래스(Classes), 열거형(Enumerations), 프로토콜(Protocols)
연산자
*띄어쓰기가 중요하다!
ex) a - b : a에서 b를 빼는 식
ex) a -b : a와 -b
조건문
=> if, switch
<Switch문>
- 열거형(enum)과 함께 자주 사용된다.
- 맨 마지막에 defaut를 설정할 수 있다.
- fallthrough 키워드를 사용하면 특정 케이스에 해당되어 구문을 실행한 이후, 조건문을 빠져나가지 않고 다음 케이스 블럭으로 이동할 수 있다.
옵셔널
*옵셔널 체이닝 : 옵셔널을 연쇄적으로 사용하는 것. 옵셔널이 있는 프로퍼티나 메서드에 연속적으로 접근할 수 있다.
ex) sam?.address.city
클래스, 구조체, 열거형
클래스, 구조체, 열거형 모두 메모리에 할당되며, 그 생성된 대상을 인스턴스라고 한다.
특히, 클래스의 인스턴스를 객체라고 한다.
* 아래 코드에서 momCar, dadCar, broCar 가 인스턴스.
class Car {
let model: String
var price: Int
init(modelName: String, price: Int) {
self.model = modelName
self.price = price
}
func drive() {
print(model, price)
}
}
// Car 클래스를 인스턴스화 시킨 것
var momCar = Car(modelName: "Kia", price: 1000)
var dadCar = Car(modelName: "Benz", price: 2000)
var broCar = momCar
momCar.price = 5000 // change
momCar.drive() // 5000
dadCar.drive() // 2000
broCar.drive() // 5000
구분 | 클래스 (Class) | 구조체(Struct) | 열거형(Enum) |
프로퍼티에 기본 값이 없는 경우 | 이니셜라이저 필수 (init) | 생성자가 자동으로 제공됨 | case를 사용 |
타입 | 참조 타입 | 값 타입 | |
데이터 저장 | ARC 시스템으로 메모리 관리. 인스턴스 데이터는 힙(Heap)에, 해당 힙을 가리키는 변수는 스택(Stack)에 저장. => 변수의 메모리 주소값이 힙을 가리킨다. => 값 전달 x. 저장된 주소 전달 o |
인스턴스 데이터를 모두 스택(Stack)에 저장. 새로운 변수에 할당(값 전달)할 때마다 '복사본'을 생성(=다른 메모리 공간 생성) 스택 프레임 종료 시, 메모리에서 자동 제거 |
|
상속(Inheritance) | 상속 가능 | 상속 불가능 |
상속
클래스 간에 코드 및 속성을 공유하는 매커니즘.
* override : 부모 클래스에서 상속받은 메서드/속성/서브스크립트를 자식 클래스에서 다시 정의할 때 사용
* super : 자식 클래스에서 부모 클래스의 메서드, 속성, 초기화메서드를 호출할 때 사용. (ex. super.method() )
* final : 클래스, 메서드, 속성, 서브스크립트를 상속이 불가능하도록 만든다.
4️⃣ 느낀점
오늘은 꼭 개인 과제를 시작하려했으나,
생각보다 코드카타와 강의 수강에 시간이 너무 많이 들었다.
온라인 강의는 오늘 끝냈으니, 내일은 개인과제에만 몰입할 것이다!
개인과제를 하면서 하고 싶은 것
-> git 사용, github 업로드
-> 시행착오 과정 정리 (TIL)
5️⃣ 내일 계획
내일은 하루종일 학교 도서관에 있을 거다!!
오전 -> 코드카타
오후 -> 개인과제
14시 -> Git 특강
밤 -> TIL 작성, 팀 회고
'Swift > TIL(TodayILearned)' 카테고리의 다른 글
[Swift|TIL] 240312 - 접근 제한자, extension, subscript (1) | 2024.03.12 |
---|---|
[Swift|코드카타] (프로그래머스) 입문 #35. 부족한 금액 계산하기 - 수학 공식을 활용하여 더 가볍게 코딩! (0) | 2024.03.08 |
[Swift|TIL] 240307 회고 (0) | 2024.03.08 |
[Swift|TIL] 240305 회고 (2) | 2024.03.05 |
[Swift|TIL] 240304 회고 (4) | 2024.03.04 |