最好有一个在完成时调用的委托方法/块,或者发布通知(如果多个实例对事件感兴趣)。这将允许您通过使作为完成事件的结果执行的操作对类匿名来打破您当前拥有的依赖关系WhosWhereConnection
。最简单的更改是将 table view 参数替换为块。
使用委托需要最多的代码。其他答案显示其他选项的代码。
对于委托,我们希望:
- 定义将被调用的方法的协议
- 保存委托对象引用的属性
- 委托的使用
- 委托方法的实现
1、2、3 正在WhosWhereConnectionDelegate
上课。4 在表视图控制器上。
1.
@protocol WhosWhereConnectionDelegate < NSObject >
- (void)connection:(WhosWhereConnectionDelegate *)connection didCompleteWithStatus:(BOOL)status;
@end
2.
@property (weak, nonatomic) id < WhosWhereConnectionDelegate > delegate;
3.
您没有显示做什么setUpConnection
,但应在连接完成后进行委托调用。
- (void)setUpConnection {
BOOL status = NO;
...
// stuff here to process things and determine the status
...
[self.delegate connection:self didCompleteWithStatus:status];
...
}
4.
表视图控制器在连接开始之前将自己设置为连接的委托。
- (void)connection:(WhosWhereConnectionDelegate *)connection didCompleteWithStatus:(BOOL)status
{
[self.tableView reloadData];
}