2024. 4. 17. 16:27ㆍiOS
1. TableView 배치 후 Constraints 조정
2. Layout
3. Table View를 관리할 UITableViewCell을 상속받은 클래스 생성
4. identity inspector에서 myCell을 MyTableViewCell에 연결
5. Label에 Constaint 지정
6. dequeueReusableCell method
7. stack view 지정
8. 함수 numberOfSections는 필수 메서드가 아니며, 정의하지 않을 경우 기본 1을 가진다.
9. outlet으로 연결된 변수 myLabel은 값 부여 시 optional이 해제된다.
10. casting
Swift에서 upcasting과 downcasting은 클래스의 인스턴스를 다룰 때 사용되는 개념입니다. 이들은 클래스 계층 구조 내에서 타입 변환을 수행할 때 쓰입니다. 여기서 upcasting은 서브 클래스의 인스턴스를 슈퍼 클래스 타입으로 변환하는 것을 의미하고, downcasting은 슈퍼 클래스의 인스턴스를 서브 클래스 타입으로 변환하는 것을 의미합니다.
### Upcasting (업캐스팅)
업캐스팅은 안전한 작업이며, 항상 성공합니다. 서브 클래스는 슈퍼 클래스의 모든 특성을 상속받기 때문입니다. Swift에서는 업캐스팅을 위해 `as` 연산자를 사용합니다.
class Animal {}
class Dog: Animal {}
let myDog: Dog = Dog()
let myAnimal: Animal = myDog as Animal // 업캐스팅
여기서 `Dog` 클래스는 `Animal` 클래스의 서브 클래스입니다. `Dog` 인스턴스를 `Animal` 타입으로 업캐스팅하는 것은 항상 가능합니다.
### Downcasting (다운캐스팅)
다운캐스팅은 슈퍼 클래스의 인스턴스를 서브 클래스 타입으로 변환하려고 할 때 사용됩니다. 이 작업은 항상 성공하는 것이 아니기 때문에, Swift에서는 두 가지 방법을 제공합니다: 안전한 다운캐스팅을 위해 `as?`를 사용하고, 강제 다운캐스팅을 위해 `as!`를 사용합니다.
var someAnimal: Animal = Dog()
// 안전한 다운캐스팅
if let dog = someAnimal as? Dog {
print("다운캐스팅 성공, Dog 인스턴스입니다.")
} else {
print("다운캐스팅 실패")
}
// 강제 다운캐스팅
let anotherDog = someAnimal as! Dog // 만약 someAnimal이 Dog 인스턴스가 아니라면 런타임 오류 발생
`as?`를 사용한 다운캐스팅은 옵셔널을 반환합니다. 만약 다운캐스팅이 성공하면 옵셔널에 서브 클래스 타입의 인스턴스가 포함되고, 실패하면 `nil`을 반환합니다. 반면, `as!`를 사용한 강제 다운캐스팅은 성공한다는 것을 확실히 알고 있을 때만 사용해야 합니다. 실패할 경우 런타임 오류가 발생합니다.
이처럼 업캐스팅과 다운캐스팅은 클래스 계층에서 인스턴스의 타입을 변환할 때 중요한 역할을 합니다. 업캐스팅은 안전하지만, 다운캐스팅은 주의해서 사용해야 합니다.
11. optional binding
binding되지 않은 변수를 사용할 경우, 수정을 위해 Xcode에서 binding하는 방법을 제안한다.
*참고자료: iOS 프로그래밍 실무 강의 - 한성현 교수님
'iOS' 카테고리의 다른 글
networking, encoding (0) | 2024.05.08 |
---|---|
OpenAPI, RESTful (0) | 2024.05.01 |
앱 개발 실습 - 1 (0) | 2024.04.03 |
Swift 문법 - 3 (0) | 2024.03.27 |
Swift 문법 - 2 (0) | 2024.03.20 |