1. addTarget: ? ,addObserver: ?等所有需要傳遞self的方法都要注意,尤其是self用作代理的時候要注意呐矾。
例如:[[NSNotificationCenter defaultCenter] addObserver:self?selector:@selector(reopenSession:) name:kNeedReopenSession object:nil];
2.wkwebview:? [userContentController addScriptMessageHandler:self name:@"backHomeClick_test”];需要調(diào)用removeScriptMessageHandlerForName方法妹笆,否則會循環(huán)引用
使用WebViewJavascriptBridge時,[self.bridge registerHandler:@"closeActivity" handler:^(id data,WVJBResponseCallback responseCallback){},viewDidDisappear時需要調(diào)用removeHandler:否則會循環(huán)引用
3.UIAlertController的事件里使用alert 奠支,注意要使用__weak typeof(alertController)weakAlert = alertController,否則會循環(huán)引用抚芦。
4.?代理要用weak修飾倍谜,@property(nonatomic,weak)id?delegate;否則容易引起循環(huán)引用叉抡。
6.block里面使用self時尔崔,使用 ?weakself? strongSelf。
7.NStimer的使用時注意銷毀褥民。?
?例:-(void)viewDidDisappear:(BOOL)animated{
? ? [super viewDidDisappear:animated];
? ? if(![self.navigationController.viewControllers containsObject:self]){
? ?請在這里銷毀timer}}
8.把self加入到NSArray中季春,也容易引起循環(huán)引用
9.A類別中動態(tài)添加屬性p,如果屬性p應(yīng)用A消返,容易造成循環(huán)引用载弄。
檢測循環(huán)引可以引入第三方框架:MleaksFinder。
以上為本人項目中遇到的循環(huán)引用情況撵颊,如果你有循環(huán)引用方面的經(jīng)驗宇攻,歡迎留言分享。