1
當引用在Objective-C的塊的內部的弱的ivar當ARC被使能,並運行時隱式地保持於其中的ivar所屬的對象?例如:如何實例變量弱的內存管理ARC在Objective-C啓用了塊內工作?
- (void) foo {
void (^block)() = ^{
[_weakIvar doSomethingAwesomeButNotTooAwesome]; // Is self retained here?
}
block();
}
雖然我們在這,但是在同一場景中弱財產又如何呢?
- (void) foo {
void (^block)() = ^{
[self.weakProperty doSomethingAwesomeReallyAwesomeDudeYeah];
}
block();
}
然而,即使'self'被保留通過將塊複製到堆上,它不一定會創建一個循環,是嗎? – 2012-01-26 22:51:12
如果自由塊*保留和*的塊由自(例如,如果該塊被存儲在一個實例變量或強/複製屬性)保留它創建了一個週期。 – 2012-01-26 23:44:53
是啊,這就是我的想法。我不確定塊的實現細節。在.NET世界我來自哪裏,「代表」(大致相同的塊)有不同的內存管理語義。 – 2012-01-31 00:08:20