を構築し、私は、下の灰色のボックスの3行目を以下のコードでソートlamdbaのためのクラッシュレポートを取得開始しました:クラッシュが発生していないスウィフト2.1エラーは、唯一のリリースに
private func fixOverlaps(inout blocks: [TimeBlock], maxOverlaps: Int? = nil) {
blocks.sortInPlace { a,b in
if a.startTime < b.startTime {
return true
} else if a.startTime == b.startTime && a.endTime < b.endTime {
return true
}
return false
}
...
注意デバッグ時にはXCodeからビルドします。 App StoreとAd Hocのアーカイブのみがクラッシュし、ブロックリストの長さが数百になっている場合にのみ発生します。
私はこれにコードを修正し、問題が去っていきました:
private func fixOverlaps(inout blocks: [TimeBlock], maxOverlaps: Int? = nil) {
blocks = blocks.sort { a,b in
if a.startTime < b.startTime {
return true
} else if a.startTime == b.startTime && a.endTime < b.endTime {
return true
}
return false
}
...
は、私はINOUTまたはsortInPlaceを使用する方法について見逃している何かがありますか?私はこれのデモをしようとすることができます。 iOS(8/9)とSwift 2.1の複数のバージョンにあります。
EDITは--------------------
[OK]を、ここでクラッシュし、最小限のバージョンです。イントゥーは赤ちゃんだった。だから、リリースでそれを実行して、あなたはあなたの周りにループを終了した場合、それが「完了」のプリントを参照する必要があり
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var blocks = [TimeBlock]()
for var i in 0...20 { //Works if you put in a small number like 8
let t = TimeBlock()
t.start = Int(arc4random_uniform(1000)) //Get some random numbers so the sort has to do some work
t.end = Int(arc4random_uniform(1000))
blocks.append(t)
}
blocks.sortInPlace { a,b in
if a.start > b.start {
return true
}
return false
}
print("done") //Gets here on debug, not release
}
class TimeBlock {
var start = 0
var end = 0
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
:あなたはXCodeの7.1の新しい単一のビューのプロジェクトを開始した場合は、これでビューコントローラを交換することができます17が、20でクラッシュします。正確な数はあなたのために異なるかもしれません。
確かにアップルに報告する人:https://bugreport.apple.com –
コアの質問とは無関係のサンプルコードクリーンアップ: '>'はあなたに '>'を与えるので、あなたの 'sortInPlace'の' if'は不要です。ブール値。あなたは '{a、b in a.start> b.start}'と書くことができます。 '$ 0'を使うと暗黙的に返されるので、簡単に' $ $ start $ 1start ''を実行することもできます。 –
@PaulCantrell終了時刻はどうですか?それは自分自身をきれいにしますか? – Carlos