将函数指定给函数指针时崩溃

时间:2015-12-29 15:47:37

标签: ios objective-c pointers function-pointers

我有一个非常奇怪的崩溃。请参阅下面的代码。

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。 这有什么不对吗?请有人建议。

1 个答案:

答案 0 :(得分:0)

啊,在我将其他案例的代码粘贴到案例0后,崩溃停止了。不知道原因的真正原因是什么,所有案例看起来都一样。至少我能够继续下去。对不起麻烦的家伙们。谢谢。

相关问题