1

我正在使用以下代码(http://stackoverflow.com/questions/44712​​89/how-to-filter-nsfetchedresultscontroller-coredata-with-uisearchdisplaycontroll)创建的模态视图控制器中呈现一个表格视图,因此我可以使用核心数据,NSFetchedResults和一个 UISearchbar。我终于在表格视图/搜索/详细视图结束时一切正常,但我刚刚发现了一个我似乎无法弄清楚的显示停止器。

当我使用以下方法关闭 tableview 时:

  - (IBAction)doneButtonPressed:(id)sender {[self dismissModalViewControllerAnimated:YES];}

模态视图关闭,主视图加载,然后应用程序崩溃。它已经够远了,我可以从主视图控制器调用这个 nslog:

-(void) viewDidAppear:(BOOL)animated { NSLog(@"do I crash");}

我在这里遇到了错误的访问错误:

   int main(int argc, char *argv[]) 
   {
       @autoreleasepool {
         return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));}}

我相信这些问题可能与弧有关。我使用的代码模板不是用于arc的,所以我做了以下更改:

    @property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
    @property (nonatomic, retain, readonly) NSFetchedResultsController *fetchedResultsController;

    @property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
    @property (nonatomic, strong, readonly) NSFetchedResultsController *fetchedResultsController;

    @property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
    @property (nonatomic, retain) NSFetchedResultsController *searchFetchedResultsController;
    @property (nonatomic, retain) UISearchDisplayController *mySearchDisplayController;

    @property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
    @property (nonatomic, strong) NSFetchedResultsController *searchFetchedResultsController;
    @property (nonatomic, strong) UISearchDisplayController *mySearchDisplayController;

此外,我从 didreceivememorywarning 中删除了以下内容:

   [fetchedResultsController_ release];
   [searchFetchedResultsController_ release];

并更改了以下内容 - (NSFetchedResultsController *)fetchedResultsController

    return [[fetchedResultsController_ retain] autorelease];

    return fetchedResultsController;

并在 - (NSFetchedResultsController *)searchFetchedResultsController

    return [[searchFetchedResultsController_ retain] autorelease];

    return searchFetchedResultsController;

我完全被难住了。任何帮助将不胜感激!

4

1 回答 1

1

嗯,问题解决了。我无法想象我是第一个或最后一个遇到这个问题的人,所以如果你遇到类似的困难......

在搜索了搜索代码之后(我认为它必须与此有关,因为如果我在关闭模态视图之前进行搜索,它不会崩溃),我仍然找不到任何错误。

然而,我意识到我正在以编程方式创建我的 searchBar 和 searchDisplayDelegate。一时兴起,我决定在故事板中创建 searchBar 和 displayDelegate,然后将它们链接起来。添加它们后,我从 loadView 中注释掉:

//  UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44.0)];
//   self.mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];

此外,在情节提要中添加它们会在 viewDidUnload 中自动创建以下内容:

[self setSearchBar:nil];
[self setMySearchDisplayController:nil];

中提琴!没有更多的崩溃......我认为这只是 mySearchDisplayController 没有正确卸载。希望对其他人有所帮助!

于 2012-06-03T13:36:15.510 回答