Kann doFirst
hier einen Rückhaltezyklus verursachen?Ruft das Aufrufen einer Methode innerhalb eines Blocks, die eine andere Methode aufruft, die sich auf self bezieht, einen Retain-Zyklus auf?
@interface Example : NSObject
@property (nonatomic, strong) void (^block)();
@end
@implementation Example
- (void)doFirst
{
__weak id weakSelf = self;
self.block =^{
[weakSelf doSecond];
};
self.block();
}
- (void)doSecond
{
self.value = //...
// do other stuff involving self
}
@end
Ein nützlicher Tipp, wenn man sich auf eine weakSelf bezieht, ist etwas wie folgt: '__ weak typeof (self) weakself = self'. Macht die Dinge einfacher, wenn Code an verschiedenen Orten wiederverwendet wird usw. – liamnichols