Issue #38

The other day, I was building Anchors which needs to support iOS and macOS. What’s clever way to not use #if os(iOS) || os(tvOS) in all files? Use typealias

This is the first version. I’m trying to support iOS 8, macOS 10.10

#if os(iOS) || os(tvOS)
  import UIKit
  public typealias View = UIView
  public typealias LayoutGuide = UILayoutGuide
  public typealias EdgeInsets = UIEdgeInsets
#elseif os(OSX)
  import AppKit
  public typealias View = NSView
  public typealias LayoutGuide = NSLayoutGuide
#endif

But then because of LayoutGuide, I need to bump deployment target to iOS 9, macOS 10.11. Which is not what I want. @available to the rescue, but it will affect everything below it. The solution is to split the platform check, the first as normal, the second with @available check

#if os(iOS) || os(tvOS)
  import UIKit
  public typealias View = UIView
  public typealias EdgeInsets = UIEdgeInsets
#elseif os(OSX)
  import AppKit
  public typealias View = NSView
#endif

#if os(iOS) || os(tvOS)
  import UIKit
  @available(iOS 9.0, *)
  public typealias LayoutGuide = UILayoutGuide
#elseif os(OSX)
  import AppKit
  @available(macOS 10.11, *)
  public typealias LayoutGuide = NSLayoutGuide
#endif