2
我有一個方法的可可/ Objective-C類,看起來像這樣:調用從內部塊內的塊
- (void)doWork:(void (^)(void))handler
{
[self->someObject doActualWork:kWorkID handler:^(Result *result) {
if (handler)
handler();
}];
}
然而,當內塊被稱爲handler
已dealloced和程序調用時會崩潰。據我所知,這是因爲該塊存儲在堆棧中,因此doWork:
完成後不久就被刪除。我正在使用ARC。我應該怎麼做才能解決這個問題?
我明白了。我沒有在'actualWork:handler:'中複製該塊。謝謝。 – 2012-01-02 20:33:47