iphone numberOfSectionsInTableView消息发送到解除分配的实例

Bru*_*sai 1 iphone objective-c uitableview dealloc ios

我有一个崩溃问题 - >([AGIPCAssetsController numberOfSectionsInTableView:]:消息发送到解除分配的实例0x1976d7b0),它有时会发生,但有时不会发生.所以,我不知道如何解决它.看来我在tableview内存管理中做错了.我在iOS7/iOS7.1 iphone4上测试过.我没有测试其他版本/手机.这是我的代码.

@interface AGIPCAssetsController : UIViewController<UITableViewDataSource, 
UITableViewDelegate, AGIPCGridItemDelegate,UIAlertViewDelegate >{
}
@property (retain,nonatomic) IBOutlet UITableView *tableView;
Run Code Online (Sandbox Code Playgroud)

我将tableview属性设置为retain,但是在dealloc之后调用numberOfSectionsInTableView.这是我的问题.1.任何解决它的想法?2.任何解决方法的想法.如调用[NSThread sleepForTimeInterval:0.5]; 在dealloc的开头,保持对象活着.

小智 5

在取消分配viewcontroller之前,只需将tableView的委托和dataSource设置为nil即可.例如:

_tableView.delegate = nil;
_tableView.dataSource = nil;
[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,您应该使用tableView的weak属性而不是ARC中保留的等于strong的属性.