Swift中如何化简标准库中冗长的类实例初始化代码
来源:互联网 发布:安装至u盘 ubuntu 编辑:程序博客网 时间:2024/06/05 05:55
可能有些童鞋并不知道,在Swift中缩写点符号对于任何类型的任何static成员都有效.
我们实际写一个例子看一下:
import UIKitclass CFoo{ static let sharedInstance = CFoo()}struct SFoo{ static let sharedInstance = SFoo()}let foo:CFoo = .sharedInstancelet f:SFoo = .sharedInstance
以上代码中可以看到,foo类型为CFoo,而CFoo恰好拥有一个静态属性sharedInstance,所以可以使用缩写点符号来完成简化.f变量与foo类似.
咋一看好像只是一个小花招,没啥实际的用处,然而并不尽然,在Swift中要和传统的Objc代码打交道,经常可以看到C样式的枚举初始化代码:
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
是不是很讨厌呢!我们可以写一个扩展来简化语法(以下是代码摘录):
extension CAMediaTimingFunction{ // 这个属性会在第一次被访问时初始化。 // (需要添加 @nonobjc 来防止编译器 // 给 static(或者 final)属性生成动态存取器。) @nonobjc static let EaseInEaseOut = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) // 另外一个选择就是使用计算属性, 它同样很有效, // 但 *每次* 被访问时都会重新求值: static var EaseInEaseOut: CAMediaTimingFunction { // .init 是 self.init 的简写 return .init(name: kCAMediaTimingFunctionEaseInEaseOut) }}
接着我们可以这样优雅的使用啦:
animation.timingFunction = .EaseInEaseOut
0 0
- Swift中如何化简标准库中冗长的类实例初始化代码
- 早期Swift中Cocos2D初始化代码的重构
- java中如何防止类被初始化(实例化)?
- Swift中常用标准库函数的使用
- Swift中类的初始化器与继承
- Java中对象如何初始化(实例化)
- java中对象如何初始化(实例化)
- Swift子类初始化函数中调用父类初始化函数的正确位置
- Swift子类初始化函数中调用父类初始化函数的正确位置
- Swift中常用标准函数
- 关于vector中类实例的初始化和析构
- 【转】类初始化中实例变量的执行顺序
- java中实例变量的初始化时机
- Spring MVC中对于邮件的初始化,和发送邮件实例代码
- Swift中使用C11标准的原子操作
- Swift中创建Array和Dictionary的初始化
- swift笔记之新项目中navigationController的创建和初始化
- java中初始化,实例化,构造器
- HDOJ-----2120并查集(水题)
- 广告页右上角的“跳过”按钮
- 中国剩余定理(CRT)学习小结
- STM32环境搭建,建立工程及程序烧录
- 【opencv练习04-常用项の输出】
- Swift中如何化简标准库中冗长的类实例初始化代码
- 达内学习笔记——输出格式
- POJ 3071 概率DP
- hdoj 5779 Tower Defence ??dp
- IOS_study day 04
- linux(3)
- Android 全仿To圈儿录音界面实现
- Sublime Text3安装以及初次配置
- 杭电1257(最长递增子序列O(N*N)+O(N*logN))