嗨,我是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.