Swift项目需要很长时间才能构建。我该怎么办?

时间:2016-06-03 07:48:09

标签: ios xcode swift build

我不确定这是否可以重现......

我的快速iOS项目需要很长时间才能构建。实际上,它没有建立,进度条现在只停留在那里大约15分钟:

enter image description here

这真的很奇怪。

这是我在构建它之前所做的:

  • 更改了版本和内部版本号
  • 存档项目
  • 在将存档上传到app store时写了一些代码
  • 上传后存档有错误,因此我清理了项目
  • 再次归档
  • 我注意到我忘了在项目设置的链接二进制文件部分添加一个pod,所以我添加了它
  • 再次存档
  • 上传到app store
  • 被问及this question(我觉得这不重要)

现在,进度条就在那里。

我可以做些什么来加快速度?

P.S。

昨天不需要很长时间才能建造。我今天只添加了几行代码,所以我不认为问题是因为我的项目太大了。也许是Xcode中的一个错误。

有趣的事实:当我写完问题时,进度条仍然存在。

更新

签出this post后,我发现编译始终停留在此文件中:

class UserSettings {
    static var valueOfPi: Double {
        let π = NSUserDefaults.standardUserDefaults().doubleForKey("valueOfPi")
        return π == 0.0 ? M_PI : π
    }

    static var usePiLiteral: Bool {
        return NSUserDefaults.standardUserDefaults().boolForKey("usePiLiteral")
    }

    enum SigFigOptions{
        case No
        case Yes(Int)

        func correctTo (i: Double) -> Double {
            switch self {
            case .No:
                return i
            case let .Yes(sigFig):
                if i == 0 {
                    return 0
                }
                let d = ceil(log10(i < 0 ? -i : i))
                let power = sigFig - Int(d)
                let magnitude = pow(10.0, Double(power))
                let shifted = round(i * magnitude)
                return shifted / magnitude
            }
        }
    }

    enum AngleMeasures : String {
        case Degrees = "Degrees"
        case Radians = "Radians"
        case Gradians = "Gradians"
    }

    static var sigFigOption: SigFigOptions {
        let userPref = NSUserDefaults.standardUserDefaults().integerForKey("sigFigOption")
        return userPref == 0 ? .No : .Yes(userPref)
    }

    static var angleMeasure: AngleMeasures {
        let measureId = NSUserDefaults.standardUserDefaults().integerForKey("angleMeasure")
        switch measureId {
        case 0:
            return .Radians
        case 1:
            return .Degrees
        case 2:
            return .Gradians
        default:
            return .Radians
        }
    }

    static func convertToPref (angleRadians: Double) -> Double {
        switch angleMeasure {
        case .Radians:
            return angleRadians
        case .Degrees:
            return 180 * angleRadians / UserSettings.valueOfPi
        case .Gradians:
            return 180 * angleRadians / UserSettings.valueOfPi * (10.0 / 9.0)
        }
    }

    static func convertFromPref (prefAngle: Double) -> Double {
        switch angleMeasure {
        case .Radians:
            return prefAngle
        case .Degrees:
            return prefAngle * UserSettings.valueOfPi / 180.0
        case .Gradians:
            return prefAngle / (10 / 9) * UserSettings.valueOfPi / 180.0
        }
    }

    static var pref90Degrees: Double {
        return convertToPref(valueOfPi / 2)
    }

    static var pref180Degrees: Double {
        return pref90Degrees * 2
    }

    static var prefHideWarning: Bool {
        get { return NSUserDefaults.standardUserDefaults().boolForKey("hideWarning") }
        set { NSUserDefaults.standardUserDefaults().setBool(newValue, forKey: "hideWarning") }
    }

    static var aValue: Double {
        get { return NSUserDefaults.standardUserDefaults().doubleForKey("aValue") }
        set { NSUserDefaults.standardUserDefaults().setDouble(newValue, forKey: "aValue") }
    }

    static var bValue: Double {
        get { return NSUserDefaults.standardUserDefaults().doubleForKey("bValue") }
        set { NSUserDefaults.standardUserDefaults().setDouble(newValue, forKey: "bValue")}
    }

    static var cValue: Double {
        get { return NSUserDefaults.standardUserDefaults().doubleForKey("cValue") }
        set { NSUserDefaults.standardUserDefaults().setDouble(newValue, forKey: "cValue")}
    }
}

该文件中的哪些代码可能导致此问题?我认为这与NSUserDefaults有关,对吧?

1 个答案:

答案 0 :(得分:1)

我尝试了各种技术,启动了许多命令,但最后我注意到有两个命令行实际上提高了编译速度,可能它们对你的情况很有用(你必须关闭并重新打开Xcode才能激活这些设置):

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks <1|2|4|8|16|..>

(Xcode将用于执行任务的线程数默认为CPU具有相同数量的核心 - &gt;默认值= CPU核心)

defaults write com.apple.Xcode XCMaxNumberOfDistributedTasks <desired-number>

(com.apple.Xcode域中的用户默认XCMaxNumberOfDistributedTasks控制Xcode将立即向DNB系统发送的并发编译作业数量;默认情况下为25)

enter image description here