2

当我启用“僵尸对象”时,我收到此错误(“ViewController respondsToSelector:]: message sent to deallocated instance”)。我发现错误在哪里,但我不知道如何解决它。

这是代码: ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UISearchDisplayDelegate, UISearchBarDelegate>{


    // The saved state of the search UI if a memory warning removed the view.
    NSString        *savedSearchTerm;
    NSInteger       savedScopeButtonIndex;
    BOOL            searchWasActive;
}

@property (nonatomic, copy) NSString *savedSearchTerm;
@property (nonatomic) NSInteger savedScopeButtonIndex;
@property (nonatomic) BOOL searchWasActive;

视图控制器.m

...
// when I comment out "viewDidDisappear" everything is ok, how to solve this on different way?
- (void)viewDidDisappear:(BOOL)animated
{
    // save the state of the search UI so that it can be restored if the view is re-created
    self.searchWasActive = [self.searchDisplayController isActive];
    self.savedSearchTerm = [self.searchDisplayController.searchBar text];
    self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];
}...

感谢帮助

4

3 回答 3

2

你在做什么来“创造”这个错误?

I my case, I popped the ViewController off the navigation stack and there were still NSNotifications sent to this VC. I simply forgot to remove all observers to my VC.

于 2013-07-05T11:36:51.027 回答
0

您应该将 [super viewDidDisappear:animated] 放在覆盖的开头,因为这是默认实现。忘记那条线有时会导致问题。

编辑:

我认为您可能需要发布更多代码。关键可能在于您正在做或不做的其他事情。

于 2012-05-10T16:07:17.957 回答
0
/*
- (void)viewDidDisappear:(BOOL)animated
{
    // save the state of the search UI so that it can be restored if the view is re-created
    self.searchWasActive = [self.searchDisplayController isActive];
    self.savedSearchTerm = [self.searchDisplayController.searchBar text];
    self.savedScopeButtonIndex = [self.searchDisplayController.searchBar selectedScopeButtonIndex];
}
*/
于 2013-03-14T09:46:39.680 回答