Swift的小技巧(周三贴)

1 Swift 的 protocol 如是 optional的, 最好这个protocol 遵循  NSObjectProtocol, 原因是你需要对delegte调用responds方法检查
2 optional 协议的写法是这样的
@objc  protocol QISCaptureManagerDelegate : NSObjectProtocol {
  @objc  optional  func didChangeAccessCameraState(isGranted:Bool);
  @objc  optional  func didOutputDecodeStringValue(stringValue:NSString);
  @objc  optional  func didDecodeUnmatchType(codeType:NSString);
}

3 iOS上用swift CGFloat和 Float的转换 如果用 Float(expression)这种方式是很烦人的,而且浪费时间
   extension Int {
    var f: CGFloat { return CGFloat(self) }
}

extension Float {
    var f: CGFloat { return CGFloat(self) }
}

extension Double {
    var f: CGFloat { return CGFloat(self) }
}

extension CGFloat {
    var swf: Float { return Float(self) }

用以上的extension就世界清静许多。

3 dispatch queue 的写法也变了
     DispatchQueue.global(qos: .background).async(execute: {
                    } )

     DispatchQueue.main.async {
        }


         以前的dispatch - after snippet 则变成   
                let deadlineTime = DispatchTime.now() + .seconds(1)
                DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
                    self.push(MMBVerifyingCodeViewController())
                }
4 delegate检查
     if self.delegate != nil && (self.delegate?.responds(to: #selector(QISCaptureManagerDelegate.didOutputDecodeStringValue(stringValue:))))!
     {
          self.delegate!.didOutputDecodeStringValue!(stringValue: stringValue)

      } 

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值