Answers:
在Objective-C中直接使用C导致错误的访问
strcpy(0, "bla");
注意:虽然这在我知道的任何系统上都可以使用-在C运行时的将来版本或编译器中,这可能不再导致崩溃。请参见在Objective-C中空指针取消引用是未定义的行为吗?)
(很快,您必须桥接到objC来执行此操作)
WebKit discarded an uncaught exception
问题。
我当前的最爱:
assert(! "crashing on purpose to test <insert your reason here>");
经典:
kill( getpid(), SIGABRT );
还有一些pr0n:
*(long*)0 = 0xB16B00B5;
所有这些都会生成由崩溃报告工具捕获的崩溃。
assert()
是一种调试功能,将这样的问题留在发行版中几乎没有意义。对此有单元测试。
assert
不是调试功能。断言失败是您认为不可能的错误。最好中止甚至是发行版本,而不是继续运行程序以产生无法预料的后果。
abort();
导致异常终止…这是崩溃。
向已释放对象发送消息
exit(0);
(必须...输入... 30个字符)
您还可以引发异常:
[NSException raise:NSInternalInconsistencyException
format:@"I want to test app crashes!."];
将手势识别器添加到可识别10指轻击的视图(iPhone上为5指,因为10会有点拥挤)。GR附带有一个方法,该方法执行前面提到的任何surefire方法中的任何一种都会使您的应用崩溃。大多数用户不会在您的应用程序上放十根手指,因此可以避免普通用户意外导致崩溃。
但是,您应该能够使用诸如Testflight之类的东西,或者只是将其部署到个人设备上并进行野外测试,然后再将其提交给Apple。强制崩溃可能会导致您的应用被Apple拒绝。
可以尝试像
NSArray* crashingArray = [NSArray arrayWithCapacity:1];
[crashingArray release];
应该在EXC_BAD_ACCESS上崩溃(可能需要再次释放它,但通常它应该已经这样崩溃了)
我通常会终止该过程:
kill(getpid(), SIGKILL);
因此,如果您安装带有信号的处理程序,则还可以处理崩溃,完成写入打开的文件等操作。
我用
[self doesNotRecognizeSelector:_cmd];
试试这个:
- (IBAction)Button:(id)sender
{
NSArray *array = [NSArray new];
NSLog(@"%@",[array objectAtIndex:8]);
}
WebKit discarded an uncaught exception
到目前为止,我已经了解了所有这些想法!谁知道这些天使应用程序崩溃是如此困难?