Halo 0.1.8

Halo 0.1.8

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2018 年 4 月
SPM支持 SPM

HaloWang 维护。



Halo 0.1.8

  • 作者:
  • 王策

Halo

CI Status Version License Platform

Halo 是我为开发 iOS 应用所积累的一个工具库

Halo 帮助我快速编写简洁的代码

Halo 的名字取自一款叫做 HALO 的游戏

Halo 使用 Swift 编写,目前仅支持 iOS 平台

你还可以在我的博客上找到关于 Halo 的介绍

集成 Halo

Podfile

platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
    pod 'Halo'
end

链式语法

Halo 中许多方法都是为了实现链式语法

非链式语法:

object.propertyA = valueA
object.propertyB = valueB
object.propertyC = valueC
object.propertyD = valueD

链式语法:

object
    .propertyA(valueA)
    .propertyB(valueB)
    .propertyC(valueC)
    .propertyD(valueD)

效果图:

  我这样做的主要原因有:

  • 不喜欢每次在设置对象的多个属性时都要多写一个 object
  • 可以在 map 等函数中设置属性的同时返回结果

这种方法的基本实现为:

extension Class {
    //  Chainable method of property
    func property(property: propertyType) -> Self {
        self.property = property
        return self
    }
}

要处理的事情

链式方法生成器

通过上面的基本实现,大家也可以发现,实现链式方法是一个很机械的工作,我认为可以通过shell脚本或者objc-runtime来自动生成链式方法

链式方法调用起来有些麻烦

比如下面

UILabel()
    .superView(view)
    .text("YOUR_TEXT")

虽然 superView 方法返回的是 Self,但有时调用 text(:) 时却缺少自动补全(智能提示)