목록제네릭 (3)
브래의 슬기로운 코딩 생활
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/BjJ3s/btsCMpbuE62/fhpifg3osKIvgE7eMwUju0/img.png)
옵셔널 체이닝 (Optional Chaining) 옵셔널 체이닝 (Optional Chaining) 옵셔널로 선언된 변수의 맴버에 안전하게 접근하기 위한 방법 (?) Optional Chaining 예 class Person { var name: String var age: Int init(name: String, age: Int) { self.name = name self.age = age } } let kim: Person = Person(name: "Kim", age: 20 ) print(kim.age) let han: Person? = Person(name: "Han", age: 25 ) print(han.age) //print(han!.age) // print(han?.age) //Optiona..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m8WvG/btsmkJbbFRW/nFUlyChZTdcVkx9hxKmu81/img.png)
옵셔널 체이닝 (Optional Chaining) 옵셔널 체이닝 (Optional Chaining) 옵셔널로 선언된 변수의 맴버에 안전하게 접근하기 위한 방법 (?) Optional Chaining 예 class Person { var name: String var age: Int init(name: String, age: Int) { self.name = name self.age = age } } let kim: Person = Person(name: "Kim", age: 20 ) print(kim.age) let han: Person? = Person(name: "Han", age: 25 ) print(han.age) //print(han!.age) // print(han?.age) //Optiona..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/brO4o6/btsglyNErNS/mY2mH2KIcU0JsvuQmnKc3k/img.png)
delegation design pattern - class(struct)가 책임의 일부를 다른 유형의 인스턴스에 전달(또는 위임)할 수 있도록 하는 디자인 패턴 - protocol에 위임된 목록을 작성하고, delegate(보통 내가 만든 class)는 위임된 기능을 작성 프로토콜은 다중 상속이 가능함. optional: 필요한 경우 구현하는 메서드 required: 필수로 구현해야하는 메서드 ~.delegate = self ~.datasource = self delegate 소스에는 모든 메소드는 optional이다. 열거형(enum) .~ : .앞에 열거형 생략 enum Week: String { case Mon,Tue,Wed,Thur,Fri,Sat,Sun func printWeek() { //메서..