๐Ÿ‘จโ€๐ŸŽ“
Today I Learned
  • Today-I-Learend
  • ๐ŸŽWWDC
    • Developer Tools
      • Testing in Xcode
    • UIKit
      • UIDiffableDataSource
        • [WWDC 19] Advances in UI Data Sources
      • [WWDC2019] Advances in CollectionView Layout
  • ์ž๋ฃŒ๊ตฌ์กฐ
    • Heap ์ž๋ฃŒ๊ตฌ์กฐ
  • Clean code
    • ๋„ค์ด๋ฐ
    • ์ฃผ์„๊ณผ ํฌ๋งทํŒ…
    • ํ•จ์ˆ˜
    • ํด๋ž˜์Šค
    • ์—๋Ÿฌ ํ•ธ๋“ค๋ง
    • ๊ฐ€๋…์„ฑ ๋†’์ด๊ธฐ
    • ๊ฐ์ฒด์ง€ํ–ฅ
  • Network
    • RestAPI
  • Swift
    • DateType
    • ARC
    • Availablity
    • KeyPath
    • Network
    • Neverํƒ€์ž…
    • Result
    • Selector
    • ๊ฒ€์ฆํ•จ์ˆ˜
    • ๋ฉ”ํƒ€ํƒ€์ž…
    • ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „
    • ์—๋Ÿฌ์ฒ˜๋ฆฌ
    • ์ ‘๊ทผ์ œ์–ด (Access Control)
    • ์ œ๋„ค๋ฆญ
    • ์ฃผ์š” ํ”„๋กœํ† ์ฝœ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๊ทธ๋ž˜ํ”„
    • ๊ธฐ์ดˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋ˆ„์ ํ•ฉ(Prefix)
    • ๋ณต์žก๋„
    • ๋น„ํŠธ๋งˆ์Šคํ‚น
  • ์šด์˜์ฒด์ œ
    • ์šด์˜์ฒด์ œ์˜ ๊ฐœ์š”
    • ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ
    • CPU ์Šค์ผ€์ค„๋ง
    • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”
    • ๊ต์ฐฉ์ƒํƒœ
    • 07. ๋ฉ”๋ชจ๋ฆฌ
    • 08.๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ
    • ์ž…์ถœ๋ ฅ ์žฅ์น˜
    • ํŒŒ์ผ ์‹œ์Šคํ…œ
  • UIKit
    • UITableView xib์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๊ธฐ
  • ๐Ÿ–Š๏ธ์ •๋ณด ๊ธฐ๋ก
    • ์ฝ”์ฝ”์•„ํŒŸ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • iOS Project
    • ์ฑ„ํŒ… ์•ฑ ๋งŒ๋“ค๊ธฐ
      • Trouble shooting
      • 1. ๋””์ž์ธ
      • 2. AutoLayout
    • ๋‚ ์”จ ์กฐํšŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
      • Figma๋ฅผ ์ด์šฉํ•œ UI ์„ค๊ณ„
      • TableView ์—ฐ๊ฒฐํ•˜๊ธฐ
      • Networking
    • MVC -> MVVM์œผ๋กœ ๊ตฌ์กฐ ๋ณ€๊ฒฝํ•ด๋ณด๊ธฐ
      • MVC
      • MVVM
    • OAuth Project
      • ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ์ž‘
      • Github์˜ OAuth App ์„ค์ •
    • Rest API ํ”„๋กœ์ ํŠธ
      • UI์„ค๊ณ„ (with Figma)
      • Network Model
      • MVVM ๊ตฌ์กฐ ์ „ํ™˜
  • ๐Ÿ•ถ๏ธUIKit
    • Compositional Layout
Powered by GitBook
On this page
  1. Swift

Availablity

PreviousARCNextKeyPath

Last updated 2 years ago

๐Ÿ’ก ํŠน์ • Swift ๋ฒ„์ „ ๋˜๋Š” ํŠน์ • ํ”Œ๋žซํผ, ์šด์˜์ฒด์ œ ๋ฒ„์ „๊ณผ ๊ด€๋ จ๋œ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

@available

  • ํƒ€์ž…, ์†์„ฑ, ๋ฉ”์„œ๋“œ ์•ž์— ์„ ์–ธ

  • iOS ๋ฒ„์ „ x ์ด์ƒ์„ ์ ์šฉํ•˜๊ณ ์žํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ API์˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ์„ฑ์„ ๊ฒฐ์ •

#available

  • ์กฐ๊ฑด๋ฌธ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. (if, guard, while)

  • ๋Ÿฐํƒ€์ž„์— API์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฒฐ์ •ํ•œ๋‹ค

  1. ํ”Œ๋žซํผ ์ด๋ฆ„

    iOS iOSApplicationExtension macOS macOSApplicationExtension macCatalyst macCatalystApplicationExtension watchOS watchOSApplicationExtension tvOS tvOSApplicationExtension swift

  2. ๊ฐ€์šฉ์„ฑ

    *

  3. ์ถ”๊ฐ€์ •๋ณด

    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
๋งค๊ฐœ๋ณ€์ˆ˜