๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

iOS/Swift

ARC ์•Œ์•„๋ณด๊ธฐ

ARC

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

  • iOS ์˜ ๊ฒฝ์šฐ ARC ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค.
  • ํž™์—์„œ๋Š” ์ฃผ๋กœ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ์˜ค๋žซ๋™์•ˆ ์ €์žฅ๋˜์–ด ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ํ• ๋‹น๋˜๋Š”๋ฐ, ํ• ๋‹น๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์ œํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜

  • ๊ฐ์ฒด์™€ ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ ๊ฐ•ํ•œ ์ฐธ์กฐ ์‹ธ์ดํด์ด ๋ฐœ์ƒ์„ ํ•˜์—ฌ, ํž™์— ์˜ฌ๋ผ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์ œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
    • ๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด weak ์™€ unowned ์ด๋‹ค.
      • ๊ณตํ†ต์ 
      • ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ ˆํผ๋Ÿฐ์Šค ์นด์šดํŒ…์„ ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ 
      • ์ฐจ์ด์ 
        • weak
          • ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด nil ์„ ์ž๋™์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.
          • nil์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, var ๋กœ ์„ ์–ธํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฌด์กฐ๊ฑด optional ์ด์–ด์•ผ ํ•œ๋‹ค.
        • unowned
          • ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์ ธ๋„ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ → ์•ฑ์ด ๊บผ์งˆ ์œ„ํ—˜์ด ์žˆ์Œ

๊ฐ์ฒด์™€ ํด๋กœ์ €๊ฐ€ ์„œ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ

  • ๊ฐ์ฒด์™€ ํด๋กœ์ €๊ฐ€ ์„œ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ ๊ฐ•ํ•œ ์ฐธ์กฐ ์‹ธ์ดํด์ด ๋ฐœ์ƒํ•จ → ์บก์ณ ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉํ•จ


๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

  • ํŠน์ • ์‹œ๊ฐ„์ด์ƒ ์˜ค๋ž˜ ์ž‘์—…ํ•˜๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, ํด๋กœ์ €๊ฐ€ ViewController๋ฅผ ๊ฐ•ํ•œ์ฐธ์กฐ๋กœ ๋ถ™๋“ค๊ณ  ์žˆ๊ฒŒ ๋งŒ๋“ค๊ธฐ๋„ ํ•จ