ReactiveCocoa 对weakify和strongify 使用上的疑惑
在 ReactiveCocoa (RAC)
中 使用@weakify
和@strongify
来避免循环引用
请各位帮忙看下我这么写有没有错误?
testControler
中
@interface testControler ()
@property(nonatomic, strong) DynamicListViewModel *dynamicListViewModel;
@end
@implementation testControler
- (void)initData {
self.dynamicListViewModel = [[DynamicListViewModel alloc] init];
@weakify(self);
// 监听动态列表
[RACObserve(self.dynamicListViewModel, dataArray) subscribeNext:^(id x) {
// 这里用不用写 @strongify(self)?????
[self.tbl_dymicList reloadData];
}];
[self.dynamicListViewModel.loadCommand execute:nil];
[self.dynamicListViewModel.loadCommand.errors subscribeNext:^(NSError *x) {
@strongify(self);
[self showErrorMsg:x.domain];
}];
[[self.dynamicListViewModel.loadCommand.executing skip:1] subscribeNext:^(NSNumber *x) {
// 这里用不用写 @strongify(self)?????
if ([x boolValue]) {
[self showProgress];
} else {
[self hideProgress];
}
}];
[self.dynamicListViewModel.loadNextCommand.errors subscribeNext:^(NSError *x) {
@strongify(self);
[self showErrorMsg:x.domain];
}];
}
@end
请各位讲解下注释中的疑问,能画下内存图更感激
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过测试打印
dealloc
方法确认代码中的疑问部分都需要使用@strongify(self)
来打破循环引用