我知道Obj-C中的塊允許你引用局部變量,這很好。但是我們可以安全地將局部變量從塊內部傳遞給另一個方法嗎?將局部變量作爲塊內的方法參數傳遞是否安全?
我知道引用self可能在塊內部是危險的,但是這會擴展到任何其他變量。
例子:
-(void)methodTakesObject(ObjectA *)object {
ObjectB *b = object.b;
__weak MyObject *weakSelf = self;
[b doInBackground:^(NSArray *results) {
[weakSelf doSomethingElseWith:results andWith:object andEvenWith:b];
}
}
有三種這裏局部變量的 「類型」。塊中的results
,方法內部創建的ObjectB
以及傳遞給該方法啓動的ObjectA
。
我應該關心使用這些變量,實際上沒有任何區別/之間的這些變量是如何從塊
該塊將保持對所有變量的強烈參考。因此,您不應該擔心使用它們。 – user3386109