Swift5+和Xcode日用品

Swift in Xcode

Swift基础,Xcode配置


Xcode中Other Swift Flags

在程序中添加Debug的识别标示位。通过#宏语法进行编译时的代码筛选。

配置方式Build Settings 中的 Other Swift Flags

defer

在块的结束位置触发,比如查看当前函数的执行时间。
let _classNameForLog: String = "\(type(of: self))"
let _timeInterval = Date().timeIntervalSince1970
print("  -> \(_classNameForLog) \(#function)")
defer{
    let _diffTimeInterval = Date().timeIntervalSince1970 - _timeInterval
    print(" <-  \(_classNameForLog) -> \(#function) : \(_diffTimeInterval)")
}

LOG输出

在程序中添加Debug的识别标示位。通过类似#宏语法进行编译时的代码筛选。
func LogPlus<T> (message_: T, fileName_: String = #file, funcName_: String = #function, lineNum_: Int = #line) {
    #if DEBUG
        let _file = (fileName_ as NSString).lastPathComponent
        print("-\(_file) \(funcName_)-[\(lineNum_)]: \(message_)")
    #endif
}
苹果官方提供的底耗Log工具,来结合instrument.app来查看调用时机和层级,有点儿像火焰图,只显示手工指定的方法。
     //苹果官方提供的Log分析工具,结合 instruments.app 可以查看调用层级,时间点等等信息。
     //LogUtils.swift
     import os.signpost
     struct LogUtils{
        static let funcTrackerLog = OSLog(subsystem: gl.bundleID, category: "funcTracker")
     }
     //任意swift类的方法起始处
     let _uniqueID = "[\(#file)]\(type(of: self))->\(#function)"
     os_signpost(.begin, log: LogUtils.funcTrackerLog, name: _uniqueID)
     defer {
         os_signpost(.end, log: LogUtils.funcTrackerLog, name: _uniqueID)
     }

if let 和 if guard

防御式编程,怎么使用guard。没有的时候做什么处理,常用来判断空或者转型失败。
    //通过名称获取DisplayObject,在其身上直接获取SKSpriteNode实例对象
    func getSpriteNodeByName(_ name_: String) -> SKSpriteNode? {
        guard let _child = self.getChildByName(name_) else {//如果没有返回空
            logUtils.LogPlus(#"getChildByName : "#+"\(name_)"+" is nil")
            return nil
        }
        guard let _skSpriteNode = _child.skNode as? SKSpriteNode else {//如果不是返回空
            logUtils.LogPlus("\(name_)"+#".skNode is nil"#)
            return nil
        }
        return _skSpriteNode
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值