我的代码结构如下:
UITableViewController
(有一个或多个) - >自定义UITableviewCell
(添加视图) - > UIViewController
现在,要将UIViewController
上的操作通知给UITableViewController
,我的协议遵循之前解释的逆流,但是,当我对UIViewController
执行某项操作时,app崩溃,因为我试图访问一个解除分配的实例......
我以肮脏的方式避免UIViewController
上的IBAction崩溃:将UIViewController
中的属性设置为self
我怎样才能解决这个漏洞?这是我的代码:
的UITableViewController:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
GameTableViewCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier: CellId];
[cell configureWithGame: currentGame];
cell.delegate = self;
return cell;
}
自定义TableViewCell:
-(void)configureWithGame:(Game *)game
{
outcomeController = [[OutcomeViewController alloc] initWithGame:game];
outcomeController.delegate = self;
activeGame = game;
//Adapting outcomeView
CGRect frame = outcomeController.view.frame;
frame.size = self.outcomeView.frame.size;
outcomeController.view.frame = frame;
[[self.outcomeView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[self.outcomeView addSubview:outcomeController.view];
}
OutcomeViewController有一个属性@property (nonatomic, strong) id forceRetain;
,它以这种方式设置在-(void)viewDidLoad
中:
self.forceRetain = self;
这会导致一些泄漏,我想解决这个问题。
答案 0 :(得分:0)
尝试在您的手机代码中将outcomeController
属性设置为strong
。
此外,使用您发布的代码,每次滚动OutcomeViewController
时都会分配UITableView
。这是你想要的行为吗?