iOS 18でクラッシュするようになった処理

以下のような処理はiOS 17までは正常に動作していたのだが、iOS 18からはクラッシュする

NSMutableArray *aDir = (NSMutableArray *)[[NSFileManager defaultManager] contentsOfDirectoryAtPath:filePath error:&err];
for (int i = 0; i < aDir.count; i++)
{
if ( /* 条件*/)
{
[aDir removeObjectAtIndex:i];
}
}
どうやら、途中で生成されるNSArrayの removeObjectAtIndexメソッドが生成時に、複製されず、null Objectになるのが原因らしい。
なので、途中で NSMutableArray *aDir = [aDir2 mutableCopy] を挟んで、明示的に複製しなければ動作しなくなったらしい。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です