Deep_Dev
article thumbnail

 

์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ

์ธ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์†Œ๋ฉธํ•  ๋•Œ ์ง„ํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ..

 

์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

์ดˆ๊ธฐํ™” ๊ณผ์ • = ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๋ฅผ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์˜ ์ดˆ๊นƒ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ์ผ

  • ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ์ •์˜ํ•˜๋ฉด ์ดˆ๊ธฐํ™” ๊ณผ์ • ์ง์ ‘ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ( ์ด๋‹ˆ์…œ๋ผ์ด์ €์˜ ์—ญํ• ์€ ๊ทธ์ € ์ธ์Šคํ„ด์Šค์˜ ์ฒซ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๋ฟ )
  • init ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋‹ˆ์…œ๋ผ์ด์ € ๋งค์„œ๋“œ์ž„์„ ํ‘œํ˜„

 

ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์˜ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €

Class SomeCLass{
	init(){
    	// ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ํ•„์š”ํ•œ ์ฝ”๋“œ
    }
}

struct SomeStruct{
	init(){
    	// ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ํ•„์š”ํ•œ ์ฝ”๋“œ
    }
}

enum SomeEnum{
	case someCase
    
    init(){
    	// ์—ด๊ฑฐํ˜•์€ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ case์ค‘ ํ•˜๋‚˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
        self = .someCase
        // ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ํ•„์š”ํ•œ ์ฝ”๋“œ
    }
}

 

 

ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’

๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ ์˜ต์…”๋„ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ €์žฅ ํ”„๋กœํผํ‹ฐ์— ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹นํ•ด์•ผ ํ•จ

ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜์‹œ, ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์ด๋‹ˆ์…œ๋ผ์ด์ €์—์„œ ๋”ฐ๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•„๋„ ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”

 

Area ๊ตฌ์กฐ์ฒด์™€ ์ด๋‹ˆ์…œ๋ผ์ด์ €

struct Area{
	var squareMeter: Double
    
    init() {
    	squareMeter = 0.0 // squareMeter์˜ ์ดˆ๊นƒ๊ฐ’ ํ• ๋‹น
    }
}

let room: Area = Area()
print(room.squareMeter) // 0.0

 Area ๊ตฌ์กฐ์ฒด๋Š” squareMeter ๋ผ๋Š” Double ํƒ€์ž…์˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. init ์ด๋‹ˆ์…œ๋ผ์ด์ €๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ

squareMeter์˜ ์ดˆ๊ธฐ๊ฐ’์€ 0.0์ด ๋œ๋‹ค.

 

์•ž์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ์ด๋‹ˆ์…œ๋ผ์ด์ €๋กœ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์— ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ, ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•  ๋•Œ ํ”„๋กœํผํ‹ฐ์— ๊ธฐ๋ณธ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’ ์ง€์ •

struct Area{
	var squareMeter: Double = 0.0 // ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’ ํ• ๋‹น
}

let room: Area = Area()
print(room.squareMeter) // 0.0

 

์ด๋‹ˆ์…œ๋ผ์ด์ € ๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋‹ˆ์…œ๋ผ์ด์ €๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์— ํ•„์š”ํ•œ ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋‹ˆ์…œ๋ผ์ด์ € ๋งค๊ฐœ๋ณ€์ˆ˜ 

srtuct Area{
	var squareMeter : Double
    
    init(fromPy py: Double) {	// ์ฒซ๋ฒˆ์งธ ์ด๋‹ˆ์…œ๋ผ์ด์ €
    	squareMeter = py * 3.3058 
    }
    
    init(fromSquareMeter squareMeter: Double) { // ๋‘๋ฒˆ์งธ ์ด๋‹ˆ์…œ๋ผ์ด์ €
    	self.squareMeter = squareMeter
    }
    
    init(value: Double){	// ์„ธ๋ฒˆ์งธ ์ด๋‹ˆ์…œ๋ผ์ด์ €
    	squareMeter = value
    }
    
    init(_value : Double) {    // ๋„ค๋ฒˆ์งธ ์ด๋‹ˆ์…œ๋ผ์ด์ €	
    	squareMeter = value
    }
}

let roomOne: Area = Area(fromPy: 15.0)
print(roomOne.squareMeter) // 49.587

let roomTwo: Area = Area(fromSquareMeter : 33.06)
print(roomTwo.squareMeter) // 33.06

let roomThree: Area = Area(value: 30.0)
let roomFour: Area = Area(55.0)

Area() // ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

 

์˜ต์…”๋„ ํ”„๋กœํผํ‹ฐ ํƒ€์ž…

์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š”, ์ฆ‰ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋™์•ˆ์— ๊ฐ’์„ ๊ผญ ๊ฐ–์ง€ ์•Š์•„๋„ ๋˜๋Š” 

์ €์žฅ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋ฅผ ์˜ต์…”๋„๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ต์…”๋„๋กœ ์„ ์–ธํ•œ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ ๊ฐ’์„ ํ• ๋‹นํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ž๋™์œผ๋กœ nil ์ด ํ• ๋‹น ๋œ๋‹ค.

 

Person ํด๋ž˜์Šค

class Person{
	var name: String
    var age: Int?
    
    init(name: String){
    	self.name = name
    }
}

let yagom: Person = Person(name: "yagom")
print(yagom.name) // "yagom"
print(yagom.age) // nil

yagom.age = 99
print(yagom.age) // 99

yagom.name = "Eric"
print(yagom.name) // "Eric"

 

์ƒ์ˆ˜ ํ”„๋กœํผํ‹ฐ

์ƒ์ˆ˜๋กœ ์„ ์–ธ๋œ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์—์„œ๋งŒ ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฒ˜์Œ ํ• ๋‹น๋œ ์ดํ›„๋กœ๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

 

๐ŸŽ ์ƒ์ˆ˜ ํ”„๋กœํผํ‹ฐ์™€ ์•ฝ์†
ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์˜ ์ƒ์ˆ˜ ํ”„๋กœํผํ‹ฐ๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ •์˜๋œ ํด๋ž˜์Šค์—์„œ๋งŒ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ํด๋ž˜์Šค์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €์—์„œ๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์˜ ์ƒ์ˆ˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†๋‹ค.

์ƒ์ˆ˜ ํ”„๋กœํผํ‹ฐ์˜ ์ดˆ๊ธฐํ™”

class Person {
	let name: String
    var age: Int?
    
    init(name: String) {
    	self.name = name
    }
}

let yagom: Person = Person(name : "yagom")
yagom.name = "Eric" // ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

๊ธฐ๋ณธ ์ด๋‹ˆ์…œ๋ผ์ด์ €์™€ ๋ฉค๋ฒ„์™€์ด์ฆˆ ์ด๋‹ˆ์…œ๋ผ์ด์ €

๊ธฐ๋ณธ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ์ €์žฅ ํ”„๋กœํผํ‹ฐ์˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋ชจ๋‘ ์ง€์ •๋˜์–ด ์žˆ๊ณ , ๋™์‹œ์— ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ œ๊ณต๋œ๋‹ค.

 

๊ตฌ์กฐ์ฒด๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š” ์ด๋‹ˆ์…œ๋ผ์ด์ €์ธ ๋ฉค๋ฒ„์™€์ด์ฆˆ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.

 

์ดˆ๊ธฐํ™” ์œ„์ž„

๊ตฌ์กฐ์ฒด์™€ ์—ด๊ฑฐํ˜•์€ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ด๋‹ˆ์…œ๋ผ์ด์ €๊ฐ€ ๋‹ค๋ฅธ ์ด๋‹ˆ์…œ๋ผ์ด์ €์—๊ฒŒ ์ผ๋ถ€ ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํž˜ํ•˜๋Š” ์ดˆ๊ธฐํ™” ์œ„์ž„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ํด๋ž˜์Šค๋Š” ์ƒ์†์„ ์ง€์›ํ•˜๋Š” ํ„ฐ๋ผ ๊ฐ„๋‹จํ•œ ์ดˆ๊ธฐํ™” ์œ„์ž„๋„ ํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ฐ’ ํƒ€์ž…์—์„œ ์ด๋‹ˆ์…œ๋ผ์ด์ €๊ฐ€ ๋‹ค๋ฅธ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด self.init ์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์‹คํŒจ ๊ฐ€๋Šฅํ•œ ์ด๋‹ˆ์…œ๋ผ์ด์ €

์‹คํŒจ ๊ฐ€๋Šฅ์„ฑ์„ ๋‚ดํฌํ•œ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋กœ์จ, ์‹คํŒจํ–ˆ์„๋•Œ nil ์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฏ€๋กœ ๋ฐ˜ํ™˜ ํƒ€์ž…์ด ์˜ต์…”๋„๋กœ ์ง€์ •๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์‹คํŒจ ๊ฐ€๋Šฅํ•œ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” init ๋Œ€์‹ ์— init? ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


์ด๋‹ˆ์…œ๋ผ์ด์ €์˜ ๋งค๊ฐœ๋ณ€์ˆ˜

์‹คํŒจํ•˜์ง€ ์•Š์€ ์ด๋‹ˆ์…œ๋ผ์ด์ €์™€ ์‹คํŒจ ๊ฐ€๋Šฅํ•œ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ๊ฐ™์€ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๊ฐ–๋„๋ก ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค.

์‹คํŒจ ๊ฐ€๋Šฅํ•œ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ์‹ค์ œ๋กœ ํŠน์ • ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ดˆ๊ธฐํ™”๋ฅผ ์‹คํŒจํ–ˆ์„ ๋•Œ๋Š” return nil์„
๋ฐ˜๋Œ€๋กœ ์ดˆ๊ธฐํ™”์— ์„ฑ๊ณตํ–ˆ์„ ๋•Œ๋Š” return ์„ ์ ์–ด ์ดˆ๊ธฐํ™”์˜ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ํ‘œํ˜„ํ•  ๋ฟ, ์‹ค์ œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •

์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ํ•จ์ˆ˜๋‚˜ ํด๋กœ์ €๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’์„ ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ œ๊ณตํ•ด์ค€๋‹ค.

๋•Œ๋ฌธ์— ํด๋กœ์ €๋‚˜ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ ํ”„๋กœํผํ‹ฐ์˜ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

 

์ฆ‰, ํด๋กœ์ € ๋‚ด๋ถ€์—์„œ๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐํ•  ์ˆ˜๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ์— ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ํ•ด๋„ ์•ˆ๋œ๋‹ค. ๋˜ํ•œ, ํด๋กœ์ € ๋‚ด๋ถ€์—์„œ self ํ”„๋กœํผํ‹ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์—†๋‹ค.

 

ํด๋กœ์ €๋ฅผ ํ†ตํ•œ ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •

class SomeClass {
	let someProperty: SomeType = {
    	// ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ์—ฐ์‚ฐ์„ ํ†ตํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
        // ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์€ SomeType๊ณผ ๊ฐ™์€ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.
        return someValue()
    }()
}

ํด๋กœ์ € ๋’ค์— ์†Œ๊ด„ํ˜ธ๊ฐ€ ๋ถ™์€ ์ด์œ ๋Š” ํด๋กœ์ €๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

ํด๋กœ์ € ๋’ค์— ์†Œ๊ด„ํ˜ธ๊ฐ€ ๋ถ™์–ด ํด๋กœ์ €๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ’์€ ํ”„๋กœํผํ‹ฐ์˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋œ๋‹ค.

 

 

์ธ์Šคํ„ด์Šค ์†Œ๋ฉธ

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ๋””์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ( ์ด๋‹ˆ์…œ๋ผ์ด์ €์™€ ๋ฐ˜๋Œ€ ์—ญํ•  )

์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜๊ธฐ ์ง์ „ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค์™€ ๊ด€๋ จํ•˜์—ฌ ์›ํ•˜๋Š” ์ •๋ฆฌ ์ž‘์—…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ก ๋””์ด๋‹ˆ์…œ๋ผ์ด์ €

  • ๋””์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์†Œ๋ฉธ๋˜๊ธฐ ๋ฐ”๋กœ ์ง์ „์— ํ˜ธ์ถœ๋œ๋‹ค. 
  • deinit ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.
  • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์—์„œ๋งŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ํด๋ž˜์Šค์—๋Š” ๋””์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ๋‹จ ํ•˜๋‚˜๋งŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ–์ง€ ์•Š์œผ๋ฉฐ, ์†Œ๊ด„ํ˜ธ๋„ ์ ์–ด์ฃผ์ง€ ์•Š๋Š”๋‹ค. ๋˜ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์ฝ”๋“œ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์—†๋‹ค.

๋””์ด๋‹ˆ์…œ๋ผ์ด์ €์˜ ๊ตฌํ˜„

class SomeClass{
	deinit(){
    	print("Instance will be deallocated immediately")
    }
}

var instance: SomeClass? = SomeClass()
instance = nil // Instance will be deallocated immediately"