我有其保持块作为对象属性的类:
@property (nonatomic, readwrite, copy) SFFailureBlock failureBlock;
其中SFFailureBlock:
typedef void (^SFFailureBlock)(NSError *error);
我有一个操作也宣称作为对象属性(AFHTTPRequestOperation),我想一旦完成它来调用不良区。
[self.operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
__weak NSError *error = [NSError errorWithDomain:@"com.test" code:100 userInfo:@{@"description": @"zero results"}];
failureBlock(error);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"nothing");
}];
我得到一个编译器警告“捕获‘自我’强烈该块很可能会导致保留周期”。 我已经在网上搜索,但我无法找到一个体面的解决方案,为什么这导致保留周期。 我不叫“自我”的块内的任何地方。
另一个奇怪的事情是,如果我写“self.failureBlock(错误)”编译器不给我任何的警告!
谁能给我解释是怎么回事? 我必须认真缺少ARC内存管理规则的东西,但我无法弄清楚。