一 : Delegate weak/strong
self.tableview = [UITableview new]; //strong 控制器对列表视图强引用
self.tableview.delegate = self; //代理对控制器强应用
strong 导致循环引用 so 用weak
NSUrlSession delegate
//创建session 设置代理 self对session强引用
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
self.session.delegate = self;
//亲测 请求任务进行中 关闭控制器,控制器不销毁
1 这也是没有办法的事, 因为请求任务进行中,如果用weak ,关闭控制器,session销毁 请求任务销毁,请求任务终端
2 请求结束 delegate=nil, 没有控制器在销毁.
ps: CoreAnimation/NSUrlsession的强代理都 加载动画/网络请求都是异步中执行的,防止在任务进行中,对象销毁,导致数据丢失,so在任务结束后,手动销毁对象..
网友评论