Availablity
๐ก ํน์ Swift ๋ฒ์ ๋๋ ํน์ ํ๋ซํผ, ์ด์์ฒด์ ๋ฒ์ ๊ณผ ๊ด๋ จ๋ ๋ผ์ดํ์ฌ์ดํด์ ๋ํ๋ธ๋ค.
@available
ํ์ , ์์ฑ, ๋ฉ์๋ ์์ ์ ์ธ
iOS ๋ฒ์ x ์ด์์ ์ ์ฉํ๊ณ ์ํ ๋ ์ฌ์ฉํ๋ค.
์ปดํ์ผ๋ฌ๊ฐ API์ ์ฌ์ฉ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์
#available
์กฐ๊ฑด๋ฌธ์์ ์ฌ์ฉํ๋ค. (if, guard, while)
๋ฐํ์์ API์ ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ ๊ฒฐ์ ํ๋ค
ํ๋ซํผ ์ด๋ฆ
iOS
iOSApplicationExtension
macOS
macOSApplicationExtension
macCatalyst
macCatalystApplicationExtension
watchOS
watchOSApplicationExtension
tvOS
tvOSApplicationExtension
swift
๊ฐ์ฉ์ฑ
*
์ถ๊ฐ์ ๋ณด
unavailable
: ์ง์ ๋ ํ๋ซํผ์์ ๋ถ๊ฐ๋ฅํ๋ค. (Swift
์์๋ ์ฌ์ฉํ ์ ์๋ค)introduced
: ์ ์ธ์ด ๋์ ๋ ํ๋ซํผ์ด๋ ์ธ์ด์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ์๋ฏธํ๋ค.deprecated
: ์ ์ธ์ด ์ฌ์ฉ๋์ง ์์ ์ง์ ๋ ํ๋ซํผ์ด๋ ์ธ์ด์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ๋ฑ๋ฑ.. ํ์ํ ๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑํด๋ณด์!
์์
@available(iOS 11.0, *)
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@available(iOS 11.0, *)
func doSomething() {
// (if, while, guard๋ฌธ์ผ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ)
if #available(iOS 11.0, *) {
// iOS 11๋ฒ์ ์ด์์ธ ๊ฒฝ์ฐ ์ ์ฉ ์ํฌ ์ฝ๋๋ฅผ ์์ฑ
} else {
// iOS 11๋ฒ์ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ ์ ์ฉ ์ํฌ ์ฝ๋๋ฅผ ์์ฑ
}
}
}
ํด๋น ํด๋์ค๋ iOS 11 ์ด์์์๋ง ํด๋น ํด๋์ค๋ฅผ ์ฝ์ ์ ์๋ค.
doSomething์ iOS 11 ์ด์์์๋ง ์กด์ฌํ๋ ์ฝ๋์ด๋ค.
iOS 11 ์ด์์์๋ง ํด๋น ์กฐ๊ฑด๋ฌธ์ด ์คํ๋๋ค. (ํ์ฌ ๋ก์ง์ผ๋ก๋ ์ ํฉํ์ง๋ ์๋ค.)
// First Release
protocol MyProtocol {
// definition
}
protocol MyRenamedProtocol {
// definition
}
@available(*, unavailable, renamed: "MyRenamedProtocol")
typealias MyProtocol = MyRenamedProtocol
Last updated