-(void)startRequestInfo{
__weak typeof(self)weakself = self;
weakself.manager=[AFHTTPSessionManager manager];
weakself.manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@"text/html"];
[weakself.manager GET:weakself.path parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([weakself.delegate respondsToSelector:@selector(sendMessage:andPath:)]) {
[weakself.delegate sendMessage:responseObject andPath:weakself.path];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
}
block回调时想要修改外部属性的值,在ARC下如果你不弱化类指针,就会警告你循环引用.原因在于block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,你在ARC下strong去修饰属性,为了持有住这个属性引用计数器会加1,程序结束完进入自动释放池,strong加的1会自动被释放,然而你进block时,block从栈内存拷贝到堆内存给你加了1,block出栈后加的1并没有做处理,内存就泄露了.解决方式就是在使用block时去弱化你要在block里引用的self,即__weak typeof(self)weakself = self;