代码之家  ›  专栏  ›  技术社区  ›  Mausimo

将视图推到导航堆栈上后释放会给我exc_bad_访问错误

  •  0
  • Mausimo  · 技术社区  · 14 年前

    以下代码位于tableview didselectrowatindexpath中。如果未对版本进行注释,则会出现错误:

    ComicDetailsViewController * comicDetailsViewController = [[ComicDetailsViewController alloc] initWithNibName:@"ComicDetailsViewController" bundle:nil];
           comicDetailsViewController.comic = (Comic *)[arrayOfComics objectAtIndex:indexPath.row];
           comicDetailsViewController.bLoadPerformances = YES;
           [self.navigationController pushViewController:comicDetailsViewController animated:YES];
           //[comicDetailsViewController release];
    

    我选择TableView行,下一个视图加载并正常工作。一旦我完成了这个视图,并点击返回导航按钮,程序崩溃,并给我exc-bad-u访问。为什么会这样?

    #0  0x9682b176 in __kill
    #1  0x9682b168 in kill$UNIX2003
    #2  0x968bd89d in raise
    #3  0x968d39bc in abort
    #4  0x968c2164 in szone_error
    #5  0x968c21e7 in free_small_botch
    #6  0x000a7877 in -[NSConcreteMutableData dealloc]
    #7  0x00006433 in -[ComicDetailsViewController dealloc] at ComicDetailsViewController.m:376
    #8  0x003cbcc7 in -[UINavigationController setDisappearingViewController:]
    #9  0x003c9219 in -[UINavigationController _clearLastOperation]
    #10 0x003c9b62 in -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:]
    #11 0x0055224a in -[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:]
    #12 0x0055338a in -[UINavigationTransitionView _navigationTransitionDidStop]
    #13 0x0034829d in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:]
    #14 0x0034812f in -[UIViewAnimationState animationDidStop:finished:]
    #15 0x0244ca28 in run_animation_callbacks
    #16 0x0244c8e9 in CA::timer_callback
    #17 0x02688d43 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
    #18 0x0268a384 in __CFRunLoopDoTimer
    #19 0x025e6d09 in __CFRunLoopRun
    #20 0x025e6280 in CFRunLoopRunSpecific
    #21 0x025e61a1 in CFRunLoopRunInMode
    #22 0x02f0c2c8 in GSEventRunModal
    #23 0x02f0c38d in GSEventRun
    #24 0x00326b58 in UIApplicationMain
    #25 0x000020f4 in main at main.m:14
    

    编辑2:

    以下是ComicDetailsView控制器DealLoc块:

    - (void)dealloc {
    [comic release];
    [xmlParser release];
    [webData release];
    [currentPerformanceObject release];
    [arrayOfPerformances release];
    [soapResults release];
    [btnPerformances release];
    [super dealloc];
    

    }

    第376行是WebData发布行

    编辑3:

        -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        NSLog(@"ERROR with theConenction");
        [connection release];
        [webData release];
    }
    
    -(void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSLog(@"DONE. Received Bytes: %d", [webData length]);
    
        if(xmlParser)
        {
            [xmlParser release];
        }
    
        xmlParser = [[NSXMLParser alloc] initWithData: webData];
        [xmlParser setDelegate: self];
        [xmlParser setShouldResolveExternalEntities: YES];
        [xmlParser parse];
    
        [connection release];
        [webData release];
    }
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   Madhup Singh Yadav    14 年前

    - (void) dealloc ComicDetailsViewController

    • dealloc
    • comicDetailsViewController

        2
  •  0
  •   Rog    14 年前

    -(void)viewWillDisappear:(BOOL)animated
       [asyncConnection cancel];
    }
    
        3
  •  0
  •   Benjamin    14 年前

    @interface PeopleViewController : UITableViewController {
    NSArray *people;
    }
    
    @property (nonatomic, retain) NSArray *people;
    
    @end
    

    @implementation PeopleViewController
    
    @synthesize people;
    
    - (void)viewDidLoad {
        people = [town.people allObjects];
    }
    
    ...
    
    - (void)dealloc {
        [people release];
    }
    
    @end