Objc Class NSObject dealloc - sonkoni/Koni-Wiki GitHub Wiki

[Objc]] ](/sonkoni/Koni-Wiki/wiki/[[NSObject|Objc-Class-NSObject)

dealloc

- (void)dealloc;
// ๋ฆฌ์‹œ๋ฒ„๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ์‹œํ‚จ๋‹ค.

๋ฆฌ์‹œ๋ฒ„์— ๋Œ€ํ•œ ํ›„์† ๋ฉ”์‹œ์ง€๋Š” ํ•ด์ œ๋œ ๊ฐ์ฒด์— ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

- (void)dealloc {
    free(myBigBlockOfMemory);
}

dealloc์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์Šคํฌ๋ฆฝํ„ฐ ๊ฐ™์€ ์ œํ•œ๋œ ๋ฆฌ์†Œ์Šค์˜ lifetime์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง์ ‘์ ์œผ๋กœ - dealloc ๋ฉ”์‹œ์ง€๋ฅผ ํ˜ธ์ถœํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๋Ÿฐํƒ€์ž„์‹œ์— ๊ฐ์ฒด์˜ - dealloc์ด ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Advanced Memory Management Programming Guide๋ฅผ ์ฐธ๊ณ ํ•˜๋ผ.

dealloc ์žฌ์ •์˜

ARC๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ retain / release / autorelease ์…‹ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ์ฆ‰, ์ฝ”๋“œ ์ƒ์— ์ถœํ˜„ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๋‹จ, dealloc๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ์•ˆ๋˜์ง€๋งŒ, ์žฌ์ •์˜๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.

โš ๏ธ ์ฃผ์˜ MRC์—์„œ์˜ ์„ฑ๊ฒฉ๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค. MRC์—์„œ๋Š” ์†Œ์œ ๊ฐ์ฒด๋ฅผ releaseํ•˜๊ณ  [super dealloc];์„ ํ˜ธ์ถœํ–ˆ์ง€๋งŒ, ARC์—์„œ๋Š” ๋‘˜๋‹ค ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๋‹จ์ง€ ํ• ๋‹น ํ•ด์ œ๋˜์—ˆ์„ ๋•Œ ์–ด๋–ค ํ• ์ผ ๋˜๋Š” ์•Œ๋ฆผ์ •๋„๋กœ ๋ณด๋ฉด๋œ๋‹ค. ๋ฆด๋ฆฌ์ฆˆ์™€ ๊ด€๋ จ๋œ ์ผ์€ ARC๊ฐ€ ์•Œ์•„์„œ ํ•œ๋‹ค.

  • MRC์—์„œ์˜ dealloc์žฌ์ •์˜ : ์†Œ์œ ๊ฐ์ฒด์˜ release -> ์ˆ˜ํผํด๋ž˜์Šค์˜ dealloc ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ.
  • ARC์—์„œ์˜ dealloc์žฌ์ •์˜ : ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ํ•ด์ œ๋˜์—ˆ์„ ๋•Œ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ํ–‰์œ„.

์˜ˆ์‹œ์ฝ”๋“œ : ARC์—์„œ์˜ dealloc์žฌ์ •์˜

- (void)dealloc {
    NSLog(@"dealloc ๋˜๋ถ€๋ €๊ตฌ๋งŒ. ์บฌ์บฌ์บฌ");
    // ARC ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ release๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด๋‚˜, [super dealloc];์„ ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
}
@end

์˜ˆ์‹œ์ฝ”๋“œ : MRC์—์„œ์˜ dealloc์žฌ์ •์˜

- (void)dealloc {
    [_myDate release]; // ์†Œ์œ ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆด๋ฆฌ์ฆˆํ•œ๋‹ค.
    [super dealloc];   // ์†Œ์œ ํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆด๋ฆฌ์ฆˆํ•œ๋’ค ์ˆ˜ํผํด๋ž˜์Šค์˜ dealloc๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค!! ๋ฐ˜๋“œ์‹œ!!
}
@end

์ฐธ๊ณ 

  • MRC
  • ARC