๊ฐ๋ฅ | ๊ตฌ์กฐ์ฒด | ํด๋์ค |
---|---|---|
property | O | O |
method | O | O |
subscript | O | O |
init | O | O |
extension | O | O |
protocol ์ค์ | O | O |
inheritance | X | O |
type casting | X | O |
deinit | X | O |
์ฐธ์กฐ ์นด์ดํ | X | O |
struct Model {
var status: Int
var message: String
}
class ViewModel {
var model: Model
var observable: Observable<Int>
}
let model = Model()
let viewModel = viewModel()
.์ผ๋ก ์ ๊ทผ
model.status
viewModel.observable
viewModel.model.message
๊ตฌ์กฐ์ฒด๋ ๋ฉค๋ฒ๋ณ ์ด๊ธฐํ ๊ตฌ๋ฌธ์ด ์๋ ์์ฑ ๋์ง๋ง,
ํด๋์ค๋ ๊ทธ๋ ์ง ์์. ํ์ํ๋ฉด ์ง์ ์ ์ํด์ผํจ.
let model = Model(status: 404, message: "success")
๊ตฌ์กฐ์ฒด์ ์ด๊ฑฐํ์ ๊ฐ ํ์
์ด๋ผ ์ฌ์ฉํ ๋ ๋ณต์ฌํด์ ์ฌ์ฉํ๋ค. (๊ธฐ์กด ๊ฐ ์ ์ง)
ํ์ง๋ง, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํด์ ์ฌ์ฉํ๋ค. (๊ธฐ์กด ๊ฐ๋ ๋ฐ๋)
C์ธ์ด์ ํฌ์ธํฐ๋ฅผ ์๊ฐํ๋ฉด ๋์ง๋ง, int * ์ฒ๋ผ ๋ฐ๋ก ํ์
์ด ๋๋์ง ์์. ๊ทธ๋ฅ ์์๋ ๋ณ์์ฒ๋ผ ์ ์ํ๋ฉด ๋๋ค.
+) Swift ์ value type ์ copy-on-write ์ด๋ค. ๊ฐ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๊ฐ ๊ฐ์ด ๋ฐ๋๊ธฐ ์ง์ ์ ๋ณต์ฌํ๊ฒ ๋๋ค!!
let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0
let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0
๐ class ๋ ์ฐธ์กฐํ์ ์ด๋ผ ์ธ์คํด์ค๋ฅผ let ์ผ๋ก ์ ์ธํด๋ ์์ ํ๋กํผํฐ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
== != ์ด ์๋๋ผ === !==
(js์์๋ ํ์
๊น์ง ๊ฐ์์ง ๋ด์ฃผ๋ ์ฐ์ฐ์์๋๋ฐ..)
struct ๋ ๊ตฌ์กฐ์ฒด๋ก struct ์ด๋ฆ ํํ๋ก ์ฌ์ฉํ๋ค. ์์ ํ๋กํผํฐ์ ๋ฉ์๋, ์ด๊ธฐ์๋ฅผ ์ ์ํ ์ ์์ผ๋ฉฐ (+ extension, protocol, subscript)
์ฃผ๋ก ๋ชจ๋ธ์ ์ ์ํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
+) ์ถ๊ฐ
๊ฐํ์
struct ๋ ๊ตฌ์กฐ์ฒด๋ก, ํด๋น ํ์
์์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๋ค. ์ด๊ธฐ์๋ ์๋ธ์คํฌ๋ฆฝํธ extension, protocol ๋ ์ฌ์ฉํ ์ ์๋ค.
enum ์ ์ด๊ฑฐํ์ผ๋ก, ํด๋น ํ์
์์ ๋๋์ด์ง๋ ์ผ์ด์ค๋ก ํํ๋๋ค.
์ฐธ์กฐ ํ์
class ๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๋ค. struct ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ทํ์ง๋ง, ์ฐธ์กฐ ํ์
์ด๊ธฐ ๋๋ฌธ์ let ํค์๋๋ก ์ ์ธํ๋๋ผ๋ ์ธ์คํด์ค ์์ ์๋ ํ๋กํผํฐ๋ ๋ณ๊ฒฝํ ์ ์๊ณ , ํ๋์ ์ธ์คํด์ค์ ํ๋กํผํฐ๋ง ๋ฐ๊ฟ๋ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ์ ์ฒด๊ฐ ๋ค ๋ฐ๋๊ฒ ๋๋ค.
+) ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์ํด์ ๊ธฐ๋ฅ์ ๊ฐ์ ธ๋ค ์ธ ์ ์๊ณ , deinit ์ผ๋ก ๋ช ์์ ์ผ๋ก ํ๋กํผํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํด์ค ์ ์๋ค.
https://bbiguduk.gitbook.io/swift/language-guide-1/structures-and-classes