经过测试第一种和第二种正确的写法,当页面离开时,都会进入下面的dealloc中。
而第三种错误的写法,当页面离开时,不会进入下面的dealloc中。
这就引出了。第一种和第二种写法正确性分析,简言之,他们都是self的属性,当self(当前页面消失时),他的属性变量也就跟着消失了,而不会出现不释放的情况。
- (void)dealloc
{
_webView.delegate = nil;
_webView = nil;
CHDebugLog(@"webView页面已销毁");
}
第一种正确的写法:--页面会释放
@interface ljADWebViewController () <UIWebViewDelegate>
{
}
@property (nonatomic, copy)NSString* shareH5URL;
@property (nonatomic, copy)NSString* shareH5Title;
@property (nonatomic, copy)NSString* shareH5Content;
@weakify(self);
[my setShareValuesBlock:^(NSString *url) {
@strongify(self);
dispatch_async(dispatch_get_main_queue(), ^{
NSDictionary *dic = [myUitle dictionaryWithJsonString:url];
self.shareH5URL = [dic objectForKey:@"url"];
self.shareH5Title = [dic objectForKey:@"title"];
self.shareH5Content = [dic objectForKey:@"content"];
[self rightButtonClick:nil];
});
}];
第二种正确写法--页面会释放
@interface ljADWebViewController () <UIWebViewDelegate>
{
NSString* _shareURL;
NSString* _shareTitle;
NSString* _shareContent;
}
@weakify(self);
[my setShareValuesBlock:^(NSString *url)
{
@strongify(self);
dispatch_async(dispatch_get_main_queue(), ^{
//@strongify(self);
NSDictionary *dic = [myUitle dictionaryWithJsonString:url];
self->_shareURL = [dic objectForKey:@"url"];
self->_shareTitle = [dic objectForKey:@"title"];
self->_shareContent = [dic objectForKey:@"content"];
});
}];
3. 错误写法---页面不释放
@interface ljADWebViewController () <UIWebViewDelegate>
{
NSString* _shareURL;
NSString* _shareTitle;
NSString* _shareContent;
}
@weakify(self);
[my setShareValuesBlock:^(NSString *url)
{
@strongify(self);
dispatch_async(dispatch_get_main_queue(), ^{
//@strongify(self);
NSDictionary *dic = [myUitle dictionaryWithJsonString:url];
_shareURL = [dic objectForKey:@"url"];
_shareTitle = [dic objectForKey:@"title"];
_shareContent = [dic objectForKey:@"content"];
});
}];