iOS-DidSelectRowatineXpath导致应用程序崩溃

iOS-DidSelectRowatineXpath导致应用程序崩溃,ios,uitableview,ios6,ios7,Ios,Uitableview,Ios6,Ios7,我有一个很奇怪的问题,我不明白。 我有一个UITableView,当我点击一行时,它会导致崩溃 self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.delegate = self; <-- If I remove this, no crash caused self.tableView.dataSource = self; 有人有什么建议吗? 谢谢 编辑: 在像@Phillip Millis这样的僵尸

我有一个很奇怪的问题,我不明白。 我有一个
UITableView
,当我点击一行时,它会导致崩溃

self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.delegate = self; <-- If I remove this, no crash caused
self.tableView.dataSource = self;
有人有什么建议吗? 谢谢

编辑: 在像@Phillip Millis这样的僵尸告诉我之后,我得到了以下信息:

*** -[RefineSearchViewController tableView:didSelectRowAtIndexPath:]: message sent to deallocated instance 0x9d24030
更新:

添加RefineSearchViewController(具有UITableView)的代码

初始化代码RefineSearchViewController

-(RefineSearchViewController*)init {
    self = [super init];

    if (self) {
        JoDModel *model = [JoDModel defaultModel];

        self.title = @"Search profile";
        _propertyNames = model.searchProfilePropertyNames;
        _properties = model.searchProfileProperties;
        _doneInvocation = nil;
        _isRefineSearch = NO;
        _transparentViews = NO;
    }

    return self;
}

-(RefineSearchViewController*)initWithTransparentViews {
    self = [self init];

    if (self) {
        _transparentViews = YES;
    }

    return self;
}

-(void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.backgroundColor = [UIColor clearColor];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.titleShadow.hidden = !_addShadow;

    JoDModel *model = [JoDModel defaultModel];

    UIBarButtonItem *doneButton;

    if (_isRefineSearch) {
        doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Search" style:UIBarButtonItemStylePlain target:self action:@selector(done)];
        _keyboardBg = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, model.keyboardHeight)];
        _keyboardBg.backgroundColor = [UIColor blackColor];
        [self.view addSubview:_keyboardBg];
    } else {
        doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Search" style:UIBarButtonItemStylePlain target:self action:@selector(performSearch)];
    }

    self.navigationItem.rightBarButtonItem = doneButton;

    // When entering this view controller, the user will probably make a new search soon, therefore it's important to update the geo location
    if (model.shareMyLocation) {
        JoDAppDelegate *appDelegate = (JoDAppDelegate*)[UIApplication sharedApplication].delegate;
        [appDelegate updateLocation];
    }
}

-(void)dealloc {
    self.tableView = nil;
    _propertyNames = nil;
    _properties = nil;
    _doneInvocation = nil;
    _titleShadow = nil;
    _keyboardBg = nil;
}

在粘贴最后一个代码之后,您的应用程序崩溃是正常的。 实际上,您应该保留对新VC(RefineSearchViewController)的引用。要显示其内容,请执行以下操作:

[self.refineSearchContainer addSubview:refineSearchController.view];    
[self.view addSubview:self.refineSearchContainer]

但风险投资失败了。可以将容器视图控制器机制与此方法一起使用

- (void)addChildViewController:(UIViewController *)childController

或者更容易地使用带有
按钮的NavigationController:
,具体取决于您要执行的操作。

在粘贴最后一个代码后,您的应用程序崩溃是正常的。 实际上,您应该保留对新VC(RefineSearchViewController)的引用。要显示其内容,请执行以下操作:

[self.refineSearchContainer addSubview:refineSearchController.view];    
[self.view addSubview:self.refineSearchContainer]

但风险投资失败了。可以将容器视图控制器机制与此方法一起使用

- (void)addChildViewController:(UIViewController *)childController

或者更容易地使用带有
按钮的NavigationController:
,具体取决于您要执行的操作。

在粘贴最后一个代码后,您的应用程序崩溃是正常的。 实际上,您应该保留对新VC(RefineSearchViewController)的引用。要显示其内容,请执行以下操作:

[self.refineSearchContainer addSubview:refineSearchController.view];    
[self.view addSubview:self.refineSearchContainer]

但风险投资失败了。可以将容器视图控制器机制与此方法一起使用

- (void)addChildViewController:(UIViewController *)childController

或者更容易地使用带有
按钮的NavigationController:
,具体取决于您要执行的操作。

在粘贴最后一个代码后,您的应用程序崩溃是正常的。 实际上,您应该保留对新VC(RefineSearchViewController)的引用。要显示其内容,请执行以下操作:

[self.refineSearchContainer addSubview:refineSearchController.view];    
[self.view addSubview:self.refineSearchContainer]

但风险投资失败了。可以将容器视图控制器机制与此方法一起使用

- (void)addChildViewController:(UIViewController *)childController

或者更容易地将NavigationController与
pushViewController:
一起使用,具体取决于您要执行的操作。

您正在将
RefineSearchViewController
创建为局部变量。假设您的项目使用ARC,当该引用超出范围(创建它的方法的末尾)时,它将被解除分配


在创建它的视图控制器中创建一个强属性,并将其指定给该属性。

您正在将
RefineSearchViewController
创建为局部变量。假设您的项目使用ARC,当该引用超出范围(创建它的方法的末尾)时,它将被解除分配


在创建它的视图控制器中创建一个强属性,并将其指定给该属性。

您正在将
RefineSearchViewController
创建为局部变量。假设您的项目使用ARC,当该引用超出范围(创建它的方法的末尾)时,它将被解除分配


在创建它的视图控制器中创建一个强属性,并将其指定给该属性。

您正在将
RefineSearchViewController
创建为局部变量。假设您的项目使用ARC,当该引用超出范围(创建它的方法的末尾)时,它将被解除分配


在创建它的视图控制器中创建一个强属性,并将其指定给它。

一些调试建议:在zombies打开的情况下运行,查看是否获得更好的错误信息,在
didselectRowatinedexpath
方法中记录一些消息,并查看它是否执行。(我很惊讶控制台日志没有说明objc_msgSend
试图针对的是什么。)您是否将方法“didSelectRowAtIndexPath”作为自定义调用?是否可以转到“断点导航器”并为所有异常添加异常断点?然后您可以在这里打印异常跟踪,这将有助于我们进行调查。您可以这样做:我试图在didSelect中执行NSLog,但没有执行。我现在将查看调试器,看看是否可以找到更清晰的内容。新消息将指向导致问题的对象。无论
RefineSearchViewController
是什么,它都是在有机会处理表视图选择之前被释放的。我们可能需要有关如何创建和引用该对象的信息来说明更多内容。有几个调试建议:在zombies打开的情况下运行,查看是否获得更好的错误信息,在
didselectRowatinexPath
方法中记录一些消息,并查看它是否执行。(我很惊讶控制台日志没有说明objc_msgSend
试图针对的是什么。)您是否将方法“didSelectRowAtIndexPath”作为自定义调用?是否可以转到“断点导航器”并为所有异常添加异常断点?然后您可以在这里打印异常跟踪,这将有助于我们进行调查。您可以这样做:我试图在didSelect中执行NSLog,但没有执行。我现在将查看调试器,看看是否可以找到更清晰的内容。新消息将指向导致问题的对象。无论
RefineSearchViewController
是什么,它都是在有机会处理表视图选择之前被释放的。我们可能需要有关如何创建和引用该对象的信息来说明更多内容。有几个调试建议:在zombies打开的情况下运行,查看是否获得更好的错误信息,在
didselectRowatinexPath
方法中记录一些消息,并查看它是否执行。(我很惊讶控制台日志没有说明objc_msgSend
试图针对的是什么。)您是否将方法“didSelectRowAtIndexPath”作为自定义调用?是否可以转到