본문 바로가기

Swift

(33)
Swift 정리 : 인스턴스 초기화 init() / Self 클래스, 구조체, 열거형(enum) 인스턴스가 생성되는 시점에서 해야 할 초기화 작업 인스턴스가 만들어지면서 자동 호출됨 init 메서드(생성자) init() { } designated initializer - 모든 프로퍼티(age, weight)를 다 초기화시키는 생성자 init()을 하나라도 직접 만들면 기본적으로 만들어지는 눈에 안보이는 default initializer는 사라짐 소멸자 -인스턴스가 사라질 때 자동 호출 -deinit{} class Man{ var age : Int //init()이 있기 때문에 초기값 생략 가능 var weight : Double //init이 호출 되면서 값이 초기화됨 func display() { //인스턴스 메소드, 앞에 아무것도 붙지 않음 print("나이..
Swift 정리 : 클래스 메소드 타입 메서드 또는 클래스 메서드는 클래스 레벨에서 동작 타입 메서드는 인스턴스 메서드와 동일한 방법으로 선언하지만 class 나 static 키워드를 앞에 붙여서 선언 class키워드로 만든 클래스 메서드는 자식 클래스에서 override가능 함 class Man{ var age : Int = 23 //stored porperty var weight : Double = 95 func display() { //인스턴스 메소드, 앞에 아무것도 붙지 않음 print("나이=\(age), 몸무게=\(weight)") } class func cM(){ //클래스가 다루는 메소드는 func앞에 class나 static이 붙음 print("cM은 클래스 메서드입니다.") } static func scM(){ prin..
Swift 정리 : 프로퍼티(Property) 프로퍼티 초기값이 있거나 init을 이용해서 초기화하거나 옵셔널 변수(상수)로 선언(자동으로 nil로 초기화 property는 저장 프로퍼티(stored property)과 계산 프로퍼티(computed property) 두 가지가 있다 저장 프로퍼티는 초기값이 있어야함, 옵셔널 변수로 선언해도 됨 class Man{ var age : Int? //stored porperty var weight : Double = 3.5 } var x : Int
Swift 정리 : 클래스 클래스 만들기 클래스의 기본 구조는 다음과 같다. class 새로운 클래스 이름 : 부모 클래스 { // 프로퍼티 // 인스턴스 메서드 // 타입(type) 메서드(클래스 메서드) } “프로퍼티” 부분은 클래스 내에 포함되는 변수(var)와 상수(let)를 정의한다. “인스턴스 메서드”는 객체가 호출하는 메서드를 정의한다. “타입 메서드”는 클래스가 호출하는 메서드를 정의한다. class Man{ var age : Int = 23 //stored porperty var weight : Double = 95 func display() { //인스턴스 메소드 print("나이=\(age), 몸무게=\(weight)") } } var x : Int var lee : Man = Man() //클래스명 다음의 괄..
Swift 정리 : 클로저 축약 표현 let add = {(val1: Int, val2: Int) -> Int in return val1 + val2 } var result = add(10, 20) print(result) //30 func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int { return cal(x, y) } result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) -> Int in return val1 + val2 }) //클로저 소스를 매개변수에 직접 작성 print(result) func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int { return cal(x, y) } var resu..
Swift 정리 : 클로저 클로저 표현식은 독립적인 코드 블록 익명함수 클로저 표현식은 매개변수를 받거나, 값을 반환하도록 만들 수도 있음 {(: , … ) -> in // 클로저 표현식 코드 } let add = { (x: Int, y: Int) -> Int in return(x+y) } print(type(of:add)) //(Int, Int) -> Int print(add(20,30)) //50 후행클로저(trailing closure) 클로저가 함수의 마지막 argument라면 마지막 매개변수명(cl)을 생략한 후 함수 소괄호 외부에 클로저를 작성 func someFun(cl: () -> Void) { } // trailing closure를 사용 안하면 someFun(cl: { //closure’s body }) // t..
Swift 정리 : 함수 - 1급 객체 함수 : 일급 객체 실습 swift의 함수는 1급 객체이다. 1급 객체(first class object) 또는 1급 시민(first class citizen) 다음 조건을 충족하는 객체를 1급 객체라고 한다. 1) 변수에 저장할 수 있다. 2) 매개변수로 전달할 수 있다. 3) 리턴값으로 사용할 수 있다. func up(num: Int) -> Int { return num + 1 } func down(num: Int) -> Int { return num - 1 } let toUp = up //up함수를 toUp에 저장 - 조건 1)변수에 저장할 수 있다. print(up(num:10)) //11 print(toUp(10)) //11 let toDown = down //down함수를 toDown에 저장 ..
Swift 정리 : guard let func printName(firstName:String, lastName:String?){ guard let lName = lastName else { //guard let에 속한 변수를 블록 밖에서도 사용이 가능하다 print("성이 없네요!") return //early exit } print(lName, firstName) //블록 밖에서 lName 사용 } printName(firstName: "길동", lastName: "홍") //홍 길동 printName(firstName: "길동", lastName: nil) //성이 없네요!