通过引用来访问实例variables是否安全?

下面的两个代码片段有什么区别:

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]; 

他们都没有导致保留周期,但苹果build议使用第一个。 第二个有问题吗?

他们有不同的效果。 第一个更新本地variables,第二个更新实例variables(属性)。

你想使用哪一个取决于你想要发生什么,但是我怀疑你想要第二个看起来像no-op,如果该块是asynchronous执行的。