使用TypeAlias在Swift中编写与平台无关的代码

众所周知的事实是,与MacOS开发相比,iOS开发有更多的资源,如果您正在使用或计划将Swift用于开发,则查找资源会更加困难。 最近,我偶然发现了swift-2048。 我更新了代码以支持Swift 4.2,并发送了请求请求。 后来我认为使用代码使该应用程序与MacOS兼容将是很棒的。 因此,我添加了一个新的Mac目标并开始进行工作。

这是不使用typealias的文件中的代码。

在此代码中,您可以看到代码是不能重用的,并且该代码在字面上重复了两次,并且由于存在平台编译时检查的API的不同,在一些细微差别上几乎相同。

  1. MacOS中没有UILabel类,我们改用NSTextField并将其isEditable属性设置为false,以便无法对其进行编辑。 我们将文本设置为NSTextField的方式也不同。 它没有text属性,而是具有stringValue属性,也没有minimumScaleFactor属性。
  2. 我们将背景颜色设置为视图和NSView的方式也不同。 我们可以直接将背景色设置为UIView,但是我们必须将背景色设置为cgColor层
  3. 两种平台之间还有一个细微的区别,那就是NSView可以有或不能有一层,而UIView总是有一层支持它。 因此,layer属性的类型对于NSView是可选的,而对于UIView不是可选的。

显然,这不是任何开发人员都会喜欢的代码。 避免代码重复的一种可能解决方案是使用类型别名 ,并在整个项目中的此处和其他类中避免重复。 下面给出的是避免重复的重构代码。

重构的代码量更大,但是可以避免您在整个Project中一遍又一遍地编写相同的代码。 您可以在Twitter,Linkedin上与我联系,并在StackOverflow和Github上查看我的开源工作。