当我在flattenMap块中引用变量时,它没有被释放。请参阅代码段 -
TestMem * t = [[TestMem alloc] init];
[[[RACSignal return:nil]
flattenMap:^RACStream *(id x) {
return [t testFunc];
}] subscribeNext:^(id x) {
} completed:^{
NSLog(@"completed");
}];
TestMem的实现如下:
@implementation TestMem
- (void)dealloc {
NSLog( @"dealloc is called: self=%@", self);
}
- (RACSignal *) testFunc {
return [RACSignal return:nil];
}
@end
TestMem对象和flattenMap块没有循环引用,所以我假设TestMem对象-t应该被释放,但它没有。如果我使用@Weakfy(t)& @strongify(t),该对象正在被释放。 任何人都可以解释为什么会这样。