クラッシュ分析をテストしようとしています。アプリを自由にクラッシュさせることがどれほど難しいかは知りませんでした。プログラミングの途中でとても簡単に思えます。アプリを強制的にクラッシュさせる方法についての提案はありますか?そして、私は少しの「メモリエラー」クラッシュを意味するのではなく、電話はそれ自体で何をすべきかを知らないという意味です。 Xcodeのオーガナイザーで、少なくともクラッシュとしてデバイスログに記録する必要があります。助言がありますか?
@throw NSInternalInconsistencyException;
アプリを殺すための多くの方法!ここに2つのライナーがあります:
[self performSelector:@selector(die_die)];
また
@[][666];
assert(NO)
と書くだけです。これにより、パラメーターとして指定された条件がチェックされ、falseの場合はアプリがクラッシュします。
編集:
exit(0)
もトリックを行います
範囲外の古き良き配列インデックスは「クラッシュの成功」を保証するものだと思うので、ここに私のお気に入りのリストを示します。
Swift 4:
[][0]
_fatalError()
Objective-C:
@[][0];
_int *x = nil; *x = 0;
__@throw NSInternalInconsistencyException;
_は問題を修正しますが、例外(クラッシュではない)であるため、 caught になる可能性があります。
多くの場合、アプリケーションを起動し、少し動作させてから10秒後にクラッシュさせると便利です。この場合(Objective-Cの場合)、次を使用します。
[self performSelector:NSSelectorFromString(@"crashme:") withObject:nil afterDelay:10];
これの2番目の利点は、セレクターが見つからないことについてコンパイラーが警告をスローしないことです(Objective-Cを使用している場合)。 :)
Swift:
self.perform("crashme:", with: nil, afterDelay: 10)
より制御された方法は、実際に自分で例外をスローすることです。
@throw [NSException exceptionWithName:NSGenericException reason:@"" userInfo:nil];
小切手 NSException.h
その他の例外。
Swift=これらは私のために働いた:
assert(false, "sdf")
この:
var hey:[Int] = []
hey[0] = 1