목록IOS (10)
현제의 현재이야기
class Soldier{ let name: String var hp: Int var needMoney : Int? init?(name: String, hp: Int) { if hp > 50000 { return nil } if name.count
상속 프로토콜, 클래스에서 가능하고 열겨형, 구조체는 상속이 불가능하다. 다중상속은 불가능, 단일 상속만 가능하다. final은 자식한테 상속했을 때, 재정의를 할 수 없게 만들어준다. 재정의가 가능한 타입 메서드 = class 하지만 class도 앞에 final이 붙으면 상속이 불가능하다. static과 똑같은 동작을 한다. 상속 받은 자식이 부모의 변수를 바꾸려면 override를 적으면 된다. class Person { var name: String = "" func selfIntroduce() { print("저는 \(name)입니다") } // final 키워드를 사용하여 재정의를 방지할 수 있습니다 final func sayHello() { print("hello") } // 타입 메서드 //..
열거형 안의 프로퍼티는 무조건 연산 프로퍼티만 가능하다. 연산 프로퍼티는 읽기 전용이고, 쓰기 전용만은 안된다. 읽기와 쓰기를 다하는 연산은 get과 set을 사용한다. struct Money { var currencyRate: Double = 1390.03 var dollar: Double = 0 var won: Double { get { return dollar * currencyRate } set { dollar = newValue / currencyRate } } } var moneyInMyPocket = Money() moneyInMyPocket.won = 11000 print(moneyInMyPocket.won) print(moneyInMyPocket.dollar) moneyInMyPocket..
클로저 let add : (Int, Int) -> Int add = { (a: Int, b: Int) in return a + b } func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) } print(calculate(a: 50, b: 40, method: add)) var calculated : Int calculated = calculate(a: 50, b: 40, method: { (left: Int, right: Int) -> Int in return left + right }) print(calculated) // 90 90 함수에 인달인자로 많이 사용된다. 문법이 함수랑 비슷해서 헷갈릴 수도..
구조체 struct Student { // 가변 프로퍼티 var name: String = "unknown" // 키워드도 `로 묶어주면 이름으로 사용할 수 있습니다 var `class`: String = "Swift" // 타입 메서드 static func selfIntroduce() { print("학생타입입니다") } // 인스턴스 메서드 // self는 인스턴스 자신을 지칭하며, 몇몇 경우를 제외하고 사용은 선택사항입니다 func selfIntroduce() { print("저는 \(self.class)반 \(name)입니다") } } // 타입 메서드 사용 Student.selfIntroduce() // 학생타입입니다 // 가변 인스턴스 생성 var yagom: Student = Student(..
옵셔널 스위프트의 대표적인 특징이라는 옵셔널을 배웠다. 옵셔널 값을 추출하는데는 if let을 사용한 옵셔널 바인딩과 !를 이용한 옵셔널 벗기기가 있다. import UIKit var address: Int? = nil if let yourAddress: Int = address{ print("당신의 주소는 \(yourAddress) 입니다.") } else{ print("아직 주소가 배정되지 않았습니다.") } //아직 주소가 배정되지 않았습니다. 이렇게 값이 없는 nil을 사용할 수 있다. 암시적 옵셔널과 그냥 옵셔널과의 차이점 import UIKit var address: Int! = 500 address = address + 2 if let yourAddress: Int = address{ pri..