swift_dynamiccast在处理和影响iOS中的性能方面花费的太多

前端之家收集整理的这篇文章主要介绍了swift_dynamiccast在处理和影响iOS中的性能方面花费的太多前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在解析和创建来自服务器的json数据的一些组合进行大量的计算.整个过程需要很多时间,主要是我有固定的代码相关的问题,但在一个地方,分析器显示了一个特定的调用所花费的时间,我无法确定.

我的处理中有很多投射.它创建了很多类型FlightFare的对象,我从一个字典创建它.

因此,convinece init如下所示,我该如何避免呢?

convenience init (dictionary: [String:AnyObject]) {
    self.init()
    refundType = dictionary["rt"] as! String
    if let unwrappedscore = dictionary["r"] as? Double {
        score = unwrappedscore
    }
    if let unwrappedValue = dictionary["t"] as? Int {
        taxes = unwrappedValue
    }
    if let unwrappedValue = dictionary["bf"] as? Int {
        baseFare = unwrappedValue
    }
    if let unwrappedValue = dictionary["f"] as? Int {
        fee = unwrappedValue
    }
    if let unwrappedValue = dictionary["d"] as? Int {
        discount = unwrappedValue
    }
    if let unwrappedValue = dictionary["tf"] as? Int {
        fare = unwrappedValue
    }
    if let unwrappedValue = dictionary["ttf"] as? Int {
        totalFare = unwrappedValue
    }
    if let unwrappedValue = dictionary["hbo"] as? Bool {
        hbo = unwrappedValue
    }
    providerKey = dictionary["pk"] as? String
    hbf = dictionary["hbf"] as? [String]
}
听起来像在做价值的事情时付税吗?串.您已将该节点折叠在配置文件中,因此我只能提供一般建议来避免此问题:确保您不会以其原始形式重复处理相同的数据.作为迁移到类型中间形式的一部分,进行一次演示.

最小化类型转换是各种Swift JSON库,如Freddy和SwiftyJSON,试图保证对JSON的解析.

如果您的JSON数据的结构类似地不确定 – 这个节点是字符串还是对象,还是只是空值? – 那么您的代码也会遇到这个问题,也必须解决这个问题.

ETA:如果演员的费用明显地被收取到您的方便初始化(您应该使用该配置文件验证),那么该方法确实是一个问题.您可以通过使用将JSON解析为类型化表示形式的库来避免,例如前面提到的Freddy.这将使用库中的枚举大小写匹配替换代码中的转换.

选中配置文件选项中的框,通常它不会显示框架代码,因此您可以很容易地看到您直接控制的方法花费时间.然后,您可以在配置文件中钻取以获得每行成本统计信息,以集中优化.

原文链接:https://www.f2er.com/swift/318794.html

猜你在找的Swift相关文章