์ค๋์ ์ฃผ๋ง์ด์๊ธฐ ๋๋ฌธ์, ๋ง์ ๋ทฐ๋ฅผ ๋ง๋ค์ง๋ ์์๊ณ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํ๊ณ , ๋ชฐ๋๋๊ฒ์ ์์๊ฐ๋๋ฐ ์ง์คํ๋ค.
๊ทธ์ค ์ค๋ ์ธ์๊น์๋ ๋ด์ฉ์ ์ ์ด๋ดค๋ค.
๐ค @available?? ์์ฃผ๋ณด๊ธดํ๋๋ฐ, ์ด๊ฒ ๋ญ์ง?
์ฝ๋๋ฅผ๋ณด๋ฉด, @๋ก ์์ํ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์์ฃผ ๋ณด๊ณคํ๋ค. @main ๋ ์๊ณ , @available๋ ์๊ณ ,, #available๋ ์๊ณ !
1๏ธโฃ @available์ ์ด๋์ ๋ดค์ด?
๋์ถฉ ์๊ธฐ๋ก๋ @available์ ios ๋ฒ์ ผ์ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ง์ด ์ผ๋ ๊ฒ ๊ฐ๋ค.
@available(iOS 12, *)
func solution() { }
@available ๋ ํด๋์ค ๋๋ ํ๋กํ ์ฝ ์์ ๋์ธ๋ค๊ณ ํ๋ค. ํ์ ๋๋ ํ๋กํ ์ฝ์ด ์ ์ฉ๋๋ ํ๋ซํผ ๋ฐ OS๋ฅผ ๋ํ๋ผ ์ ์๋ค. #available๊ณผ ๋ค๋ฅด๊ฒ, ์ปดํ์ผํ์์ ๊ฒฝ๊ณ ๋๋ ์ค๋ฅ๋ฅผ ์์ฑํ๋ค๊ณ ํ๋ค.
2๏ธโฃ ๊ทธ๋ผ #available์ ๋ญ๋ฐ?
#available์ ์ปดํ์ผ ์๋ฌ๋ ๋ฐ์์ํค์ง ์๊ณ , ์๋์ฒ๋ผ ๋ถ๊ธฐ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค์ด ๋ด๊ฐ deploy target์ด 10์ด๋ผ๋ฉด, ์๋์ฒ๋ผ ์์ฑํ ์ ์๊ฒ ๋ค.
if #available(iOS 12, *) {
self.solution()
} else {
// Fallback on earlier versions
}
3๏ธโฃ ๊ทธ๋ผ ์ฌ๊ธฐ์ * ์ ๋ญ๊น?
‘๋ชจ๋’๋ฅผ ๋ปํ๋ค.
@available(*, unavailable)
์ด๋ ๊ฒ ํ์ ๊ฒฝ์ฐ๋, ๋ชจ๋ iOS ํ๋ซํผ์ ๋ํด์ ํํํ ์ ์๋ค.
์ ์ฝ๋๋ ๊ทธ๋ผ ๋ชจ—๋ ํ๋ซํผ์์ unavailable ํ๋ค๋๋ป์ด๋ค.
์ ๊ทธ๋ผ ์ฐ๋ฆฌ ํ์์ด ์์ฑํ ์ฝ๋๋ฅผ ๋ณด์.
override init(frame: CGRect) {
super .init(frame: frame)
self.setupLayout()
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
๋ชจ๋ ํ๋ซํผ์์, ์๋ ์ฝ๋๋ฅผ ์ง์ ํ์ง ์๊ฒ ๋ค!๊ณ ์ ์ธํด์ฃผ์๋ค.
์????? required init(coder: ) ์ ๊ฑฐ ํ์ ์๋??
์ง๋๋ฒ ๋ด ๋ธ๋ก๊ทธ์์ ํ๋ฒ ์ธ๊ธํ์ ์ด ์๋ค.
https://didu-story.tistory.com/288
ํด๋น ๋ง์ง๋ง๊ธ์ ๋ณด๋ฉด, ๊ทธ๋ฅ ํ์์ฌํญ์ด๊ธฐ๋๋ฌธ์ required๋ผ๋ ํค์๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํ๋ค๊ณ ๋ง ์ ํ์๋ค.
์ฌ๊ธฐ์ ๊ฐ์ฅ ๊ถ๊ธํ๋๊ฒ, ์คํ ๋ฆฌ๋ณด๋๊ฐ ์๋๋ผ ์ฝ๋ ๋ฒ ์ด์ค๋ก ์์ฑํ์๋, ์ด์ฝ๋๋ ๊ผญ ํ์ํ๊ฐ? ์ ๋ํ ์๋ฌธ์ด์๋ค.
๊ทผ๋ฐ ํ์ ์ฝ๋์ ์์ฒ๋ผ ์์ฑ๋์ด์์๊ณ ,,, ์ด๋ฅผ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํตํด์ ์ ์ด๋ ๊ฒ ์์ฑ๋์๋์ง ํ์ธํ ์ ์์๋ค.
์ผ์ ๋๋ฌด ๊ธธ๋ค! ์ด์จ๋ , ์๋ก ๋ค ๋ค๋กํ๊ณ ๋ด๊ฐ ์ด๋ฒ์ ํตํด ์๊ฒ๋ ๊ฒ์ ์ ์ด๋ณด์๋ฉด,
- storyboard / xib ํ์ผ์ด ์๋๋์ ๋ฐ๋ผ์ init์ผ๋ก ๋ค์ด๊ฐ์ง init(coder: )๋ก ๋ค์ด๊ฐ์ง ๊ฒฐ์ ๋๋ค.
- storyboard / xib๊ฐ ์๋ค๋ฉด init()์ผ๋ก ์ง์ ํ๋ค.
๐ค ๊ทผ๋ฐ ?? ์ฝ๋๋ฒ ์ด์ค๋ผ๋ฉด??? ๊ตณ์ด init(coder: )๋ก ์ง์ ํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ @available(*, unavailable) ์ฒ๋ฆฌ๋ฅผ ํด์ค์ ์๋ฌด๊ฒ๋ ๋ค์ด๊ฐ์ง ์๋๋ก ์ฒ๋ฆฌํด์ฃผ์!!!
๊ทธ๋๋ ๊ฒฐ๊ตญ ์จ์ค์ผํ๋๊ฑด ๋ง์ฐฌ๊ฐ์ง๊ตฐ? ํ ๋๋ง ์์์ ๋๋ํ๊ฒ ์์จ๋ ๋๋ค๋ ๋ฌด์จ ํด๊ฒฐ์ฑ ์ด ์์์ค์์์ง๋ง ์ด๋ ๊ฒ๋ผ๋ ์์๊ฐ์ ๋ ๋ฟ๋ฏํ๋ค.