티스토리 뷰
구조체와 클래스
데이터를 용도에 맞게 묶어 표현고자 할 때 용이하고 OOP 를 위한 필수 요소로 사용된다.
1. 구조체
- 인스턴스 생성시 자동으로 멤버와이즈 이니셜라이저가 생성이 된다.
- 값 타입
- 메모리의 스택영역에 저장 ( 인스턴스는 스택 저장)
- 메모리의 값이 복사되어 전달
- 상속 불가능
let으로 선언시 인스턴스 내부의 프로퍼티 값을 변경할 수 없다.
struct Person {
var name: String
var age: Int
}
var a: Person = Person(name:"jj", age:28)
a.name = "mm" // 변경가능
a.age = 33 // 변경가능
let b: Person = Person(name: "mm", age:30)
b.name = "hh" // 변경불가능!
2. 클래스
- 편의 생성자 존재
- 데이터는 메모리의 힙에 저장 , 주소는 스택에 저장 (인스턴스는 힙에 저장 )
- 메모리의 주소를 전달
- 참조 타입
참조타입이므로 클래스의 인스터스를 상수로 선언해도 내부 프로퍼티 값을 변경할 수 있다.
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
var aa: Person = Person(name:"aa",age:20)
aa.name = "bb"
let bb: Person = Person(name:"bb",age:23)
bb.name = "cc"
간단한 값의 집합을 캡슐화할때, 상속이 필요없을 때 구조체 사용
상속 구조가 필요하거나 참조되는 것이 더 효율적일 때 클래스 사용
Reference
'IOS > swift' 카테고리의 다른 글
[Swift] Optional (0) | 2022.03.22 |
---|---|
[Swift] Codable (0) | 2022.03.22 |
Property wrapper (UserDefaults 적용) (0) | 2022.03.05 |
Result Type (0) | 2022.03.03 |
[Swift] lazy (0) | 2022.03.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SQL
- logstash
- docker
- ElasticSearch
- nginx
- pytest
- BigData
- MYSQL
- SWIFT
- python
- 로그
- linux
- 엘라스틱서치
- 리눅스
- spark
- ios
- 도커
- flask
- 네트워크
- WEB
- network
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함