web-dev-qa-db-ja.com

iOSアプリを強制的にクラッシュさせる最も簡単な方法は何ですか?

クラッシュ分析をテストしようとしています。アプリを自由にクラッシュさせることがどれほど難しいかは知りませんでした。プログラミングの途中でとても簡単に思えます。アプリを強制的にクラッシュさせる方法についての提案はありますか?そして、私は少しの「メモリエラー」クラッシュを意味するのではなく、電話はそれ自体で何をすべきかを知らないという意味です。 Xcodeのオーガナイザーで、少なくともクラッシュとしてデバイスログに記録する必要があります。助言がありますか?

40
Katushai
@throw NSInternalInconsistencyException;
75
Stavash

アプリを殺すための多くの方法!ここに2つのライナーがあります:

[self performSelector:@selector(die_die)];

また

@[][666];
18
fsaint

assert(NO)と書くだけです。これにより、パラメーターとして指定された条件がチェックされ、falseの場合はアプリがクラッシュします。

編集:

exit(0)もトリックを行います

12
Levi

範囲外の古き良き配列インデックスは「クラッシュの成功」を保証するものだと思うので、ここに私のお気に入りのリストを示します。

Swift 4

  1. _[][0]_
  2. fatalError()

Objective-C

  1. _@[][0];_
  2. _int *x = nil; *x = 0;_

_@throw NSInternalInconsistencyException;_は問題を修正しますが、例外(クラッシュではない)であるため、 caught になる可能性があります。

6
Andrea Mugnaini

多くの場合、アプリケーションを起動し、少し動作させてから10秒後にクラッシュさせると便利です。この場合(Objective-Cの場合)、次を使用します。

[self performSelector:NSSelectorFromString(@"crashme:") withObject:nil afterDelay:10];

これの2番目の利点は、セレクターが見つからないことについてコンパイラーが警告をスローしないことです(Objective-Cを使用している場合)。 :)

Swift

self.perform("crashme:", with: nil, afterDelay: 10)
4
ChrisJF

より制御された方法は、実際に自分で例外をスローすることです。

@throw [NSException exceptionWithName:NSGenericException reason:@"" userInfo:nil];

小切手 NSException.hその他の例外。

3
ABeanSits

Swift=これらは私のために働いた:

assert(false, "sdf")

この:

var hey:[Int] = []
hey[0] = 1
2
Esqarrouth