ios – 为什么某些Outlets成为强有力的参考文献,甚至文件规定,出口应该是弱参考

前端之家收集整理的这篇文章主要介绍了ios – 为什么某些Outlets成为强有力的参考文献,甚至文件规定,出口应该是弱参考前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我是iOS编程的新手.我知道什么是强弱弱的参考.但是当我必须处理网点时,我会混淆使用哪种类型的参考.经过文件说明之后

Outlets should generally be weak,except for those from File’s Owner to top-level objects in a nib file (or,in iOS,a storyboard scene) which should be strong.

所以我在理解上述语句之后,我们创建的Outlets通常默认是弱的.

但是,在学习一些教程的同时,我遇到了一些代码,人们已经将其作为引用.例如考虑以下代码

@interface AboutViewController : UIViewController

@property (nonatomic,strong) IBOutlet UIWebView *webView;

@end

代码

@property (nonatomic,strong) IBOutlet UIWebView *webView;

说我们的AboutViewController有一个UIWebView对象.

但是为什么我们需要一个强大的参考UIView对象呢?由于文件国家不应该是弱参考?

还请在上面引用的文档说明中解释文件的所有者对顶级对象的意思?

我在这个网站上经历了很多类似的问题,但是他们都没有帮助我清除我的疑问.所以请帮忙提前致谢 :)

解决方法

用于非顶级GUI元素 – 强或弱 – 取决于您将如何使用其插座.如果你有弱参考
@property (nonatomic,weak) IBOutlet UIWebView *webView;

然后调用方法

[webView removeFromSupeview];

您的webView将无效,只能通过添加才能恢复UIWebView

[self.view addSubview:webView];

如果这适合你 – 最好使用弱因为你不需要它时会释放webView的内存.

另一方面,如果以后有强烈的参考

[webView removeFromSupeview];

webView仍然会有referenceCount> 0和webView将被释放,只有所有者将明确释放它

self.webView = nil;

或在业主的

- (void)dealloc

与业主本身一起.

通常没有区别,如果你有静态GUI.如果要删除(不隐藏)某些视图,可以稍后添加它们 – 应该使用强引用.

顶级对象应保持较强.喜欢

@property(nonatomic,retain) UIView *view;

在UIViewController.

猜你在找的iOS相关文章