iOS) available μ•Œμ•„λ³΄κΈ°

1 minute read

πŸ’ƒ available μ•Œμ•„λ³΄κΈ°

available 을 μ‚¬μš©ν•˜μ—¬ νŠΉμ • Swift 버전 λ˜λŠ” νŠΉμ • ν”Œλž«νΌ 및 OS버전과 κ΄€λ ¨λœ μ„ μ–Έμ˜ 생λͺ…μ£ΌκΈ°λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

μ‚¬μš©κ°€λŠ₯ν•œ 속성(attribute)은 항상 λ‘κ°œ μ΄μƒμ˜ μ‰Όν‘œλ‘œ κ΅¬λΆ„λœ attribute argument λͺ©λ‘κ³Ό ν•¨κ»˜ λ‚˜νƒ€λ‚œλ‹€.

μ΄λŸ¬ν•œ argumentλŠ” λ‹€μŒ ν”Œλž«νΌ λ˜λŠ” μ–Έμ–΄ 이름 쀑 ν•˜λ‚˜λ‘œΒ μ‹œμž‘ν•œλ‹€.

  • iOS
  • iOSApplicationExtension
  • macOS
  • macOSApplicationExtension
  • watchOS
  • watchOSApplicationExtension
  • tvOS
  • tvOSApplicationExtension
  • swift

#available ?

#available 은 λ‹€μŒκ³Ό 같이 μ‚¬μš©λ˜κ³  * ν•„μˆ˜μ΄λ‹€. Bool 을 λ°˜ν™˜ν•˜λŠ” λŸ°νƒ€μž„ 검사이닀. κ·Έλž˜μ„œ λŸ°νƒ€μž„ 쀑에 λͺ¨λ“œλ₯Ό 변경해도 반영이 λœλ‹€.

// βœ… if μ—μ„œ μ‚¬μš©
if #available(iOS 14, *) {
    print("This code only runs on iOS 14 and up")
} else {
    print("This code only runs on iOS 13 and lower")
}

// βœ… guard μ—μ„œ μ‚¬μš©
guard #available(iOS 14, *) else {
    print("Returning if iOS 13 or lower")
    return
}

print("This code only runs on iOS 14 and up")

@available ?

λ©”μ„œλ“œλ₯Ό Swift, OS 버전 λ˜λŠ” ν”Œλž«νΌμ˜ 버전에 λ”°λΌμ„œ μ œν•œν•  수 μžˆλ‹€.

@available 은 ν•¨μˆ˜(λ©”μ†Œλ“œ), 클래슀 λ˜λŠ” ν”„λ‘œν† μ½œ μ•žμ— 놓인닀. νƒ€μž… λ˜λŠ” ν”„λ‘œν† μ½œμ΄ μ μš©λ˜λŠ” ν”Œλž«νΌ 및 OSλ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

#available κ³Ό λ‹€λ₯΄κ²Œ, 컴파일 νƒ€μž„μ— κ²½κ³  λ˜λŠ” 였λ₯˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

@available(iOS 12, *)
func setupDoneButton() { }

// λ‹€μŒκ³Ό 같이 μ‚¬μš© κ°€λŠ₯
@available(iOS 12.0, macOS 10.12, *)
func setupDoneButton() { }

deployment target 즉, μ΅œμ†Œν•œμœΌλ‘œ μ§€μ›ν•˜λŠ” OS 버전이 10.0 인 κ²½μš°μ— μœ„μ˜ setupDoneButton() λ©”μ„œλ“œλŠ” λ‹€μŒκ³Ό 같이 μ‚¬μš©λœλ‹€.

if #available(iOS 12, *) {
     self.setupDoneButton()
} else {
    // Fallback on earlier versions
}

좜처

iOS ) available

Categories:

Updated: