Swift - Struct(구조체)
커스텀 데이터 타입. 청사진과 같은 역할. (Java에서 클래스 개념과 유사)
구조체를 만들 때는 이름이 대문자로 시작해야 함. ex) Int, String
그 안에 원하는 속성을 추가할 수 있음
struct Town {
let name: String
var citizens: [String]
var resources: [String: Int]
init(name: String, citizens: [String], resources: [String: Int]){ // initializer(생성자와 유사)
self.name = name // self.name = 이 구조체의 name / name = 인자
self.citizens = citizens
self.resources = resources
}
func fortify(){
print("Defences")
}
}
var newTown = Town(name: "Everland", citizens: ["FuBao"], resources: ["Carrot": 100])
디자인 패턴
복잡도를 다루기 위해, 효율적인 코드를 작성하기 위해 만든 규약
MVC
모바일 앱 개발자라면 알아야 하는 가장 근본적인 디자인 패턴이자, 애플이 선택한 디자인 패턴
Model - View - Controller 세 가지 요소로 이루어짐
- Model = Data & Logic
- View = User Interface
- Controller = 중재자
Model →(요청한 데이터)→ Controller →(UI 수정을 위한 관련 내용)→ View
Model ←(이벤트 해석하여 요청)← Controller ←(input 이벤트)← View
Swift 문법 - 내부/외부 매개변수


외부 매개변수가 필요하지 않을 때, 외부 매개변수를 _ 라고 지정하면 함수를 호출할 때 checkAnswer(userAnswer: userAnswer)와 같이 쓰지 않아도 됨
왼쪽 사진에서 _는 외부 매개변수, userAnswer는 내부 매개변수
함수를 호출하는 쪽에서는 외부 매개변수의 이름, 즉 _를 사용하기 때문에 매개변수명을 명시할 필요가 없고,
함수의 기능을 작성하는 곳에서는 내부 매개변수의 이름, 즉 userAnswer을 사용.
Swift 문법 - Immutablility
이미 만들어진 조각상의 코를 키우도록 수정하고자 한다면 조각상을 새로 만들어야 함.
조각상은 그런 의미에서 불변성을 가진 물체!
Swift에서는 구조체 안에서 자동으로 self가 생성될 때, let 키워드로 정의됨.
구조체 안에서 속성을 변경하기 위해서는 mutating이라는 키워드가 필요함!
mutating을 붙이지 않고 func harvestRice() 라고만 정의하면 다음과 같은 에러 발생!
Cannot assign through subscript: 'self' is immutable
struct Town {
let name: String
var citizens: [String]
var resources: [String: Int]
init(name: String, citizens: [String], resources: [String: Int]){
self.name = name
self.citizens = citizens
self.resources = resources
}
func fortify(){
print("Defences")
}
mutating func harvestRice(){ // Town 안에서 수정
resources["Rice"] = 100 // 이 부분은 실제로 self.resources["Rice"] = 100으로 self가 생략됨
}
}
var newTown = Town(name: "Everland", citizens: ["FuBao"], resources: ["Carrot": 100])
newTown.citizens.append("AiBao") // Town 밖에서 수정
newTown.harvestRice()
'프로그래밍 > iOS' 카테고리의 다른 글
| Udemy iOS 강의 - 섹션 13 (0) | 2023.08.02 |
|---|---|
| Udemy iOS 강의 - 섹션 11~12 (1) | 2023.07.19 |
| Udemy iOS 강의 - 섹션 7~8 (0) | 2023.07.17 |
| Udemy iOS 강의 - 섹션 6 (0) | 2023.07.08 |
| Udemy iOS 강의 - 섹션 3~5 (0) | 2023.07.06 |