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 |