일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Xcode
- CLLocationManagerDelegate
- UIAlertAction
- AnyObject
- WeatherManager
- Required Reason API
- 영문 개인정보처리방침
- 한국어 개인정보처리방침
- CoreLocation
- weak var
- dispatchsource
- RunningTimer
- 클로저의 캡슐화
- UICollectionViewFlowLayout
- Protocol
- MKMapItem
- 러닝타이머
- Timer
- xcode로 날씨앱 만들기
- 러닝기록앱
- swift
- App Store Connect
- weatherKit
- 단일 책임원칙
- 서체관리자
- MKMapViewDelegate
- Startign Assignments
- addannotation
- SwiftUI Boolean 값
- font book
- Today
- Total
VesselWheel
구조체, 열거형, 클래스의 차이 본문
import UIKit
/*
구조체(struct) 열거형(enum) 클래스(class)
값type 값type 참조type
상속 X X O
extension O O O
*/
// 구조체
struct Student{
var name: String = "더조은"
var age : Int = 30
func displayName(){
print(self.name)
}
}
// 구조체 객체 생성하기 : new 를 사용하지 않음
var std1: Student = Student();
dump(std1)
// 멤버변수와 멤버함수에 접근하기
print(std1.name)
print(std1.age)
std1.displayName()
// 구조체의 값 복사하기: 할당연산자
let std2 = std1
dump(std2)
print(std2)
class Person{
var name: String="스위프트"
var age: Int = 22
func displayName(){
print(self.name)
}
}
// 클래스의 객체 생성하기
var p1: Person = Person()
// __lldb_expr_112.Person
print(p1)
dump(p1)
print(p1.name)
print(p1.age)
p1.displayName()
// 클래스의 생성자 함수
// init() : 객체가 생성될 때 자동으로 호출됨
// 구조체에 있음
// deinit() : 소멸자 함수 - 구조체에 없음
class WorkMan{
// Optional 로 선언하지 않으면 바드시 초기화해야 함
var name: String
var age: Int
// 초기화하지 않아도 되는 멤버변수는. Optional 로 선언함
var nickName: String?
// 생성자 함수를 사용해서 클래스 초기화하기
// ㄴ 멤버변수를 초기화한다는 의미
init(name: String, age: Int){
self.name = name
self.age = age
}
// 소멸자 - 소멸시 자동으로 호출됨
deinit{
self.name = ""
self.age = 0
}
}
// 클래스의 객체를 생성하는 code = 생성자함수를 호출하는 code
var wm1 = WorkMan(name:"이순신", age:46)
print("wm1.name : \(wm1.name), wm1.age : \(wm1.age)")
wm1.nickName = "거북선선장"
// Optional Binding
if let nickName = wm1.nickName{
print(nickName)
}
// 클래스 상속
// 부모클래스의 내용을 물려받아서 변형하거나 확장하는 것
// ㄴ 멤버변수/멤버메소드
class Parent{
var name: String = "부모"
var age : Int = 40
func displayName(){
print(self.name)
}
}
class Child: Parent{
}
var chd1 = Child()
print(chd1.name)
print(chd1.age)
chd1.displayName()
// 클래스의 getter/setter
class People{
var name: String = "김동호"
var korAge: Int = 32
var engAge: Int{
get{ // 멤버변수의 값을 읽을 때 자동으로 호출됨
return korAge - 1
}
set (inputValue){ // 멤버변수에 값을 할당할 때 자동으로 호출됨
korAge = inputValue + 1
}
}
}
var people1 = People()
print(people1.korAge)
print(people1.engAge)
people1.engAge = 40
print(people1.korAge)
print(people1.engAge)
// getter, setter 의 감시자 함수
struct Officer{
var name: String = "로보캅"
var age : Int = 30 {
// 감시자 함수
willSet(newAge){ // 값 설정될 때 직전에 호출
print("이전 나이 :",age)
print("새 나이 :",newAge)
}
didSet(oldAge){ // 값 설정 직후에 호출
print("이전 나이 :",oldAge)
print("새 나이 :",age )
}
}
}
var officer1 = Officer()
officer1.age = 40
'Xcode Study' 카테고리의 다른 글
protocol (0) | 2023.10.19 |
---|---|
Optional Chainnig () (0) | 2023.10.19 |
열거형 : Enum(Enumeration) (0) | 2023.10.19 |
Tuple (0) | 2023.10.19 |
구조체 배열 (0) | 2023.10.19 |