我有一个非常奇怪的崩溃。请参阅下面的代码。
typedef void(*testFunc)();
testFunc func[2];
-(void) get_testfunc : (NSInteger)testId
{
NSInteger testId = [_picker selectedRowInComponent:0];
NSLog(@"test id = %d",testId);
switch(testId){
case 0:
aes_tests_init();
func[0] = aes_tests_init;
func[1] = aes_tests_init; <<--crashes in this assignment
NSLog(@" 0%p 0%p 0%p",func[0],func[1],aes_tests_init);
break;
case 1:
aes_tests_init();
func[0] = aes_tests_init;
func[1] = aes_tests_init;
NSLog(@" 0%p 0%p 0%p",func[0],func[1],aes_tests_init);
break;
case 2:
aes_tests_init();
func[0] = aes_tests_init;
func[1] = aes_tests_init;
NSLog(@" 0%p 0%p 0%p",func[0],func[1],aes_tests_init);
break;
default:
NSLog(@"invalid enc type %d",testId);
break;
}
return;
}
我有一个选择器,我可以从中获取输入testID。我在调用者函数中使用此func指针(按下按钮)并打印结果。我有6个案例,我的所有开关案例都成功执行并给出了正确的结果,但第一种情况。 在评论上面指出的行后,Xcode指示的崩溃移动到下一行!
aes_tests_init是包含的静态库中的一个方法。为简单起见,我将所有ptrs都设置为as_tests_init。 这有什么不对吗?请有人建议。
答案 0 :(得分:0)
啊,在我将其他案例的代码粘贴到案例0后,崩溃停止了。不知道原因的真正原因是什么,所有案例看起来都一样。至少我能够继续下去。对不起麻烦的家伙们。谢谢。