Swift2.2で、自動でdeprecatedのコードを変更した時、挙動が違います。
var array = [1,2,3,4,5,6,7,8,9,10]
for var i=0;i<array.count;i++ {
print(array[i])
if(i==5){
array.removeAtIndex(5)
}
}
このコードはdeprecatedと出ます。
なので、クリックして、リターンを押して自動で以下のように変更しました。
var array = [1,2,3,4,5,6,7,8,9,10]
for i in 0 ..< array.count {
print(array[i])
if(i==5){
array.removeAtIndex(5)
}
}
すると、例外が発生します。
なぜなら、前者のコードでは、array.removeAtIndex(5)によって、arrayの数が減っているので、forの行にあるarray.countの数が減ります。
しかし、後者のコードでは、forの行にあるarray.countの数が減りません。
なので、存在しないindexの配列の要素にアクセスしてしまいます。
なので、注意が必要です。バグの発生源になるので注意しましょう。