iOS 복습(7)

유재우·2022년 2월 7일
0

Geniric

  • 기능은 같고 매개변수형만 다른 함수
  • 자료형을 결정 하지않고 함수를 선언할 수 있다.
보통의 함수
func swapInt(_ a:: inout Int, _ b: inout Int) {
    let temp = a
    a = b
    b = temp
}
Generic 함수
func swapAny<T>(_ a:: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}

초기화

designated Initializer

  • 모든 프로퍼티를 다 초기화시키는 생성자
    주의할 점 : 초기화가 끝나기 전에 다른 메소드 호출이 불가능하다.
class Person{
    var age : Int
    var height : Double
    func display()){
        print("나이=\(age)), 키=\(height)")
}
init(age: Int, height : Double){
    self.age = age
    self.height = height
} // designated Initializer
var yoo : Person = Person(age:25, height:180.2)
yoo.display()

convenience Initializer

  • 보조 이니셜라이저
  • 일부 프로퍼티만 초기화(단독으로 초기화불가능)
class Person{
    var age : Int
    var height : Double
    func display()){
        print("나이=\(age)), 키=\(height)")
}
init(age: Int, height : Double){
    self.age = age
    self.height = height
} // designated Initializer
convenience init(age: Int{
    self.init(age: age, height : 179.5)
} // convenience Initializer
var yoo : Person = Person(age:25, height:180.2)
yoo.display()
var kim : Person = Person(age:22)
kim.display()

failable Initializer

  • init 다음에 옵셔널 값이 리턴됨
class Person{
    var age : Int
    var height : Double
    func display()){
        print("나이=\(age)), 키=\(height)")
}
init?(age: Int, height : Double){
    if age <= 0 {
        return nil
    }
    else {
        self.age = age 
    }
    self.height = height
} // failable Initializer
var yoo : Person = Person(age:25, height:180.2)
yoo.display()
var kim : Person = Person(age:0, height:178.6)
kim.display()

required Initializer

  • 부모 클래스의 init 메서드
  • 자식 클래스에서 반드시 required 키워드로 재작성해야한다.

41:00~50:30까지의 내용입니다.

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글