說明釋放塊:如何使用ARC
我我的塊傳遞給異步方法,而當操作結束的叫法。我想拒絕在操作完成前調用該塊。但是,如果我在我的類中爲塊變量指定nil,則無論如何都會調用它。我調試它,我看到,如果我分配nil來阻止變量1變量2在沒有零。下面的代碼說明了它:
void (^d1)(NSArray *data) = ^(NSArray *data) {};
void (__weak^d2)(NSArray *data) = d1;
d1 = nil;
輸出:
(lldb) po d1
<__NSGlobalBlock__: 0x9c22b8>]
(lldb) po d2
<__NSGlobalBlock__: 0x9c22b8>
(lldb) po d1
<nil>
(lldb) po d2
<__NSGlobalBlock__: 0x9c22b8>
問題:
爲什麼塊D2不是零?是否按值複製,不作爲指針複製?
很好的答案,謝謝。 –