BrowseViewController
将BrowseResultsTableViewController
加载为subView
。在subview
中,是以下代码块:
- (void)viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refreshResults:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:refreshControl];
}
- (void)refreshResults:(UIRefreshControl *)sender
{
NSLog(@"REFRESH");
//[self performSelector:@selector(updateTable) withObject:nil afterDelay:1];
}
抛出错误Thread 1: EXC_BAD_ACCESS (code=2 ....
如果我清理项目并重生,我会收到此错误:
2013-03-25 23:59:06.256 rockit [40772:c07] - [UIViewControllerWrapperView refreshResults:]:无法识别的选择器发送到实例0x7516fe0 2013-03-25 23:59:06.257 rockit [40772:c07] - 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UIViewControllerWrapperView refreshResults:]:无法识别的选择器发送到实例0x7516fe0'
为什么找不到方法?
答案 0 :(得分:1)
我认为您对BrowseResultsTableViewController
的引用可能会在您创建并且方法结束后被释放。您可能需要在引用它的BrowseViewController
内创建一个实例变量。
// BrowseViewController.h
@interface BrowseViewController : UIViewController
// ...
@property (nonatomic, strong) BrowseResultsTableViewController *browseResultsVC;
// ...
@end
// BrowseViewController.m
@implementation BrowseViewController
@synthesize browseResultsVC;
// ...
- (void)someMethod {
self.browseResultsVC = [[BrowseResultsTableViewController alloc] init];
[self.view addSubview:browseResultsVC];
}
// ...
#end