以下两个代码段之间有什么区别:
1
__block __weak NSMutableArray *arrBlock = self.arr ;
[[AsyncRequest initRequest:url onCompletedBlock:^(NSMutableArray *arr) {
arrBlock = arr;
}]ExecuteRequest];
2
id __weak weakself = self;
[[AsyncRequest initRequest:url onCompletedBlock:^(NSMutableArray *arr) {
weakself.arr = arr;
}]ExecuteRequest];
它们都没有导致保留周期,但Apple suggests使用第一个保留周期。第二个问题有问题吗?
答案 0 :(得分:1)
它们有不同的效果。第一个更新局部变量,第二个更新实例变量(属性)。
你要使用哪一个取决于你想要发生什么,但我怀疑你想要第二个,因为第一个看起来像无操作,如果该块是异步执行的。