[swift] 기본문법(3)
ios/swift

[swift] 기본문법(3)

import UIKit

/*
 8. 구조체와 class
 사용방법은 같지만 구조체의 instance는 값 타입, class의 instance는 참조 타입
 구조체와 class 의 이름은 대문자로 시작하는 파스칼표기법을 따른다.
*/


// a. 구조체
struct User {
    var nickname: String
    var age: Int
    
    func information(){
        print("\(nickname) \(age)")
    }
}

// 인스턴스 생성
var user = User(nickname: "홍길동", age: 23)
user.nickname
user.nickname = "임꺽정"
user.nickname // 임꺽정
user.information()

// b. class
class Dog {
    var name: String=""
    var age: Int = 0
    
    func introduce(){
        print("name \(name) age \(age)")
    }
    
}

// 인스턴스 생성
var dog = Dog()
dog.name = "coco"
dog.age = 3
dog.name
dog.age


/*
9. 초기화 init
클래스, 구조체, 열거형에서 사용
 */

class User2 {
    var nickname: String
    var age:Int
    
    init(nickname: String, age: Int){
        self.nickname = nickname
        self.age = age
    }

    init(age: Int){
        self.nickname = "albert"
        self.age = age
    }
    
    /*
     deinitialize
     클래스에서만 구현 가능. 구조체에서는 x
     */
    deinit{
        print("deinit user")
    }
}

var user2 = User2(nickname: "gunter", age: 23)
user2.nickname
user2.age

var user22 = User2(nickname: "albert", age: 27)
user22.nickname
user22.age

var user23: User2? = User2(age: 23)
user23 = nil // 인스턴스가 더 이상 필요하지 않다고 판단해 swift 에서 자체적으로 메모리에서 소멸시켜버림
반응형

'ios > swift' 카테고리의 다른 글

[swift] 기본문법(6)  (0) 2021.11.09
[swift] 기본문법(5)  (0) 2021.11.08
[swift] 기본문법(4)  (0) 2021.11.07
[swift] 기본문법(2)  (0) 2021.11.06
[swift] 기본문법(1)  (0) 2021.11.06