我有一个工作表,如下所示:

- (void)Method1 {
    UIActionSheet *photoSourceSheet=[[UIActionSheet alloc]
                                     initWithTitle:@"Options"
                                     delegate:self
                                     cancelButtonTitle:@"Exit"
                                     destructiveButtonTitle:nil
                                     otherButtonTitles:@"opt1",@"opt2", @"opt3", nil];
    photoSourceSheet.tag=1;
    photoSourceSheet.delegate=self;
    [photoSourceSheet showInView:self.view];
}

- (void)Method2 {
    UIActionSheet *photoSourceSheet1=[[UIActionSheet alloc]
                                      initWithTitle:@"Select Video"
                                      delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      destructiveButtonTitle:nil
                                      otherButtonTitles:@"Take New Video", @"Choose Existing Video", nil];
    //   photoSourceSheet.delegate=self;
    photoSourceSheet1.tag=2;
    photoSourceSheet1.delegate=self;
    [photoSourceSheet1 showInView:self.view];
}


在我的代表中,我有:

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex: NSInteger)buttonIndex {
    if (actionSheet.tag==1) {
        if (buttonindex==2) {
            [self method2];
        }
    } else if (actionSheet.tag==2) {
        // some code
    }
}


我的委托方法被调用用于第一个操作表,即photoSourceSheet,但不被photoSourceSheet1调用。
我需要做些特别的事情,例如手动解开纸吗?
我的第二个UIActionSheet(photoSourceSheet1)出现了,但是一旦我在工作表上选择一个选项,它就会使应用程序崩溃。
抛出EXEC_BAD_ACCESS

最佳答案

上面的代码没有错。
EXEC_BAD_ACCESS基本上是由于内存管理不良所致。有时您无意中删除了正在使用的对象。
尝试启用Zombies,它将告诉您确切的问题区域。

步骤:进入编辑方案
       内存管理
       选中启用僵尸对象选项

关于objective-c - uiactionsheet崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12921460/

10-13 04:07