์๋ ํ์ธ์,
์ฐ์ , ๋ฐ๋ผํ ์ ์๋ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ง๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฌ๋ฌ๋ฉด์์ ํ๋ฅญํ๊ณ ๋งค์ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํ์ญ์์ค.
๊ทธ๋ฌ๋ ํ์๋ ๋ช
์์ ์ผ๋ก self
๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ญ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ง ์๋๋ฉด ํจ์๋ฅผ ํธ์ถํ ์ง์ ๋ํด ๋
ผ์ ์ ๊ฐ๊ณ ์์ต๋๋ค. ๋ด ์์ ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์
๋๋ค. ์๋ํ๋ฉด ์์ ๊ฐ์กฐ ํ์๋ฅผ ๋ณด๋ฉด ๋ฌด์ธ๊ฐ๊ฐ ํด๋์ค ๋ด์ (๋ก์ปฌ๋ก) ์๋์ง ์ฌ๋ถ (์ ์ญ์ ์ผ๋ก, ์ฑ๊ธ ํค ๋ฑ)๊ฐ ๋ ๋ช
ํ ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
Swift ์ง์์ ์์์ ์ผ๋ก self
์ฐธ์กฐํ์ง๋ง, ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๋ ์๋ฏธ๋ ์๋ ์๋ ์์ต๋๋ค.
๋ด ์๊ฒฌ: ๋ก์ปฌ ๋๋ ์ธ์คํด์ค ๋ณ์์ธ์ง ํ์ธํ๊ธฐ ์ํด self๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ฉ์๋ ๋๋ ํด๋์ค๊ฐ ๋๋ฌด ํฝ๋๋ค.
๋์๊ฒ ํด๋ก์ ์ ๋ช ์์ ์ธ ์์ฒด ์บก์ฒ๊ฐ ์๋ค๋ ๊ฒ์ ์ธ์ํ๋ ๊ฒ์ ๋ชจ๋ ๊ณณ์์ self๋ฅผ ์ฌ์ฉํ๋ ์คํ์ผ๋ก ์จ๊ธฐ๊ธฐ์๋ ๋๋ฌด ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ฆ, ์ด ๋ฐฐ๋ ์ด๋ฏธ RW ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ํด ํญํดํ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ค์ง๊ธฐ ์ํด์๋ ํฐ ๋ณํ๊ฐ ํ์ํฉ๋๋ค.
@hollance @rayfix
๋ต์ฅ์ ๋ณด๋ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ด ์๊ฐ์ ์ฌ๋๋ค์ด ๋น๊ต์ ํฐ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง ํ์ ํฉ๋ฅํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๊ฒํ ํ ๋ self
๋ฅผ ๋ช
์์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ํนํ ํ์ ์ฌ๋๋ค์ด ๋ค์ํ ์์ค์ ์ฝ๋ฉ์ ๊ฐ์ง๊ณ ์์ ๋ ์์
์ ํจ์ฌ ๋ ์ฝ๊ฒ ๋ฐ๋ฅผ ์ ์์ต๋๋ค. ๊ธฐ์ .
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ํด๋ก์ ์์ ๋ช
์์ ์ธ ์์ฒด ์บก์ฒ๋ฅผ ๊ฐ๋ ๊ฒ์ ๊ฐ์น๋ฅผ ๋ณผ ์ ์์ต๋๋ค(๋๋ ๋ณธ ์ ์ด ์์ต๋๋ค). ๋ฐ๋๋ก ํด๋ก์ ์์ ๋ช
์์ ์ผ๋ก self
์ฌ์ฉํ๋ฉด ์ฝ๋ฉ ์คํ์ผ์ด ์ฝ๊ฐ ์ผ๊ด์ฑ์ด ์์ต๋๋ค.
SE-0009 Require self for accessing instance members ๋ฅผ ๊ฑฐ๋ถํ Apple์ ๋ ผ๋ฆฌ์ ๋์ํฉ๋๋ค.
_* ํ์ "์๊ธฐ". ์ถ๊ฐ ๋ช ํ์ฑ์ผ๋ก ์ ๋นํ๋์ง ์๋ ์๋นํ ์์ ์ฅํฉํจ์ ๋์ ํฉ๋๋ค. ํ์ "์๊ธฐ"์ธ ๊ฒ์ ์ฌ์ค์ด์ง๋ง. ๋ฒ๊ทธ ํด๋์ค๋ฅผ ๋ฐฉ์งํ ์ ์์ง๋ง ์ด๋ฌํ ๋ฒ๊ทธ๋ฅผ ์ ๊ฑฐํ๋ ๋น์ฉ์ ์๊ฐ์ ์ผ๋ก ๋ณต์กํ๋ค๋ ๋ฉด์์ ์๋นํ ๋์ผ๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊น๋ํ Swift์ ๋๋์ ๋ฐํฉ๋๋ค. Paul Cantrell์ ์์ ์ ๋ฆฌ๋ทฐ https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/002910.html ์์ " ๊ด๋ฒ์ํ๊ฒ ๋ฐ๋ณต๋๋ ๋ชจ๋ ๊ฒ์ ๋ณด์ด์ง ์๊ฒ ๋ฉ๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค. Swift๋ ๋์์ธ์์ ์ด๋ฌํ ์์ฉ๊ตฌ ๋ฐ ๋ฐ๋ณต์ ํผํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฉฐ, ์ด๋ Swift API ๋์์ธ ๊ฐ์ด๋๋ผ์ธ https://swift.org/documentation/api-design-guidelines.html ์์๋ ์ง์งํ๋ ์์น์ ๋๋ค._
@hollance ๋ ์์ํ๋ ๊ฒ์ฒ๋ผ ๋ ์์ ๋ฉ์๋์ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ๋ช
ํ์ฑ์ ๊ฐ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํด๋ก์ ์์ self
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ self์ ๋ํ ์ฝํ/๊ฐํ ์ฐธ์กฐ ๋๋ฌธ์ ๋์๊ฒ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์ @RobertGummesson ,
์ฐธ์กฐ๋ฅผ ์ถ๊ฐํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. self.
๋ฅผ ๋ช
์์ ์ผ๋ก ์ฌ์ฉํ ์ง ์ฌ๋ถ์ ๋ํ ๋ณด๋ค ์ค๋ฆฝ์ ์ธ ๊ด์ ์ ํํํ๊ณ ์ฅ๋จ์ ์ ์ค๋ช
ํ๋ ์ธ๊ธ๋ ๋ด์ฉ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
๋์๊ฒ " self
์ฌ์ฉ์ ํผํ๋ผ"๋ ํํ์ ๋๋ฌด ๊ฐํ๋ค. RayWenderlich๋ ์ปค๋ฎค๋ํฐ์์ ํฐ ์ํฅ๋ ฅ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์คํ์ผ ๊ฐ์ด๋์์ ์ฅ๋จ์ ์ ์ค๋ช
ํ๊ณ ๊ฐ๋ฐ์๊ฐ ์ค์ค๋ก ๊ฒฐ์ ํ๋๋ก ํ๋ ๊ฒ์ด ๋ ์ ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด ์๊ฒฌ: ๋ก์ปฌ ๋๋ ์ธ์คํด์ค ๋ณ์์ธ์ง ํ์ธํ๊ธฐ ์ํด self๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ฉ์๋ ๋๋ ํด๋์ค๊ฐ ๋๋ฌด ํฝ๋๋ค.