- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在读一本书,它建议将我的 IBOutlets
声明为 weak
应该可以解决当我的应用程序收到内存不足警告时的问题。例如,我现在不再需要在 viewDidUnload
方法中将这些 socket 设置为 nil。
我还听说在 iOS6 中 viewDidUnload
被弃用,取而代之的是 didReceiveMemoryWarning
被调用。
无论如何,我该如何继续,我是否应该将我的 IBOutlet
声明为 weak
,并“忘记”实现 didReceiveMemoryWarnings
和 viewDidUnloads
?
最佳答案
不是所有的 IBOutlets
都应该是 weak
。来自Apple docs (Resource Programming guide)的推荐
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 that you create should therefore typically be weak, because:
Outlets that you create to, for example, subviews of a view controller’s view or a window controller’s window, are arbitrary references between objects that do not imply ownership.
The strong outlets are frequently specified by framework classes (for example, UIViewController’s view outlet, or NSWindowController’s window outlet).
例子:
XIB 中的顶级对象应声明为strong
,任何其他 subview /控件应为weak
属性。
@property (nonatomic, weak) IBOutlet MyView *viewContainerSubview;
@property (nonatomic, strong) IBOutlet MyOtherClass *topLevelObj;
使用 ARC weak
生命周期限定符有其自身的优势(Refer Apple docs)因为,
__weak specifies a reference that does not keep the referenced object alive. A weak reference is set to nil when there are no strong references to the object.
因此您不必担心设置 IBOutlets
nil
,它的生命周期自动受其顶级实例的约束。
didReceiveMemoryWarning
以清除任何占用内存的可重新创建资源。当您收到 didReceiveMemoryWarning
调用时,它应该用于释放使用的非关键资源,例如:自定义数据结构、用于填充 UI 的网络服务响应等。任何资源需求的非关键性由开发者决定。
关于ios - didReceiveMemoryWarning,viewDidUnload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18378866/
好的...... 我正在 iPhone 上实现一个简单的 OpenGL ES 应用程序,最近我在 Pinch Media Analytics 中添加了该应用程序。这样做有助于发现内存管理问题,但我不完
我有一个使用大量数据的应用程序,当我观看控制台时,我看到以下几行,然后应用程序被杀死。 Sep 6 13:37:35 unknown SpringBoard[29] : Received memor
我正在检查我的 iOS 应用程序,使用“模拟内存警告”作为我的正义之锤,它导致了一些意想不到的问题(自然)。但这是一个让我难过的问题:对象似乎不再相等。 假设我的 View Controller (我
当 AVCaptureSession 的 session 运行到本地 NSMutableArray 中捕获图像时,我收到 didReceiveMemoryWarning 调用。稍作测试后,我发现它发生
我在读一本书,它建议将我的 IBOutlets 声明为 weak 应该可以解决当我的应用程序收到内存不足警告时的问题。例如,我现在不再需要在 viewDidUnload 方法中将这些 socket 设
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-top
我需要这样做:分配对象直到调用内存警告,然后释放所有对象。但是我有一些问题。我怎样才能做到这一点?我需要代码示例,因为问题是:代码。我有一个不使用 ARC 的类。这个类有一个方法,它分配 N 个保存到
如果在我的应用程序中我有非关键数据,这些数据对应用程序是“全局的”,而不是特定于任何特定的 View Controller ,是否有任何关于应在何处释放此类数据的指南? 特别是:我是否可以假设在内存不
我正在寻求有关一个非常具体的内存管理问题的帮助,其中 didReceiveMemoryWarning 在应该被调用的情况下似乎没有被调用。 我有一个简单明了的应用程序,它是一个有页面的故事。我有一个外
我的一个 UIViewController 有几个 subview Controller 。它们是在界面生成器中构建的,方法是将 NSObject 拖到左侧的“Objects”部分,然后放入我自己的
我所做的是在这个方法中从 View 中释放任何东西,但我的直觉告诉我我可能做错了。 在大多数情况下,didReceiveMemoryWarning应该杀掉什么样的资源? 最佳答案 您可以在这里发布任何
我从来没有亲眼见过 didReceiveMemoryWarning 调用过。调用时是否存在已知的内存使用阈值? 最佳答案 当系统内存不足时调用它,然后您需要清除您的UIViewController。
我注意到当我的应用程序在 iPad 模拟器上处于后台状态时,我的 View Controller 没有调用它们的 didReceiveMemoryWarning 方法。更具体地说,我在日志中看到了对
我想在 Swift 中延迟加载一个 nib 文件,所以我这样做了 lazy var MyNib: UINib? = { let uiNib:UINib = MyClass.nib();
我在跟踪崩溃和内存泄漏的开发过程中。作为一种策略,您是否将任何 NSLog 消息或此类通知放入 didReceiveMemoryWarning:?此方法的文档相当稀少。在崩溃发生之前,UIViewCo
有时会调用 didReceiveMemoryWarning,但 viewDidUnload 不会。在我的情况下,我想在调用 didReceiveMemoryWarning 时强制 viewDidUnl
请帮忙,我不知道我与 didReceiveMemoryWarning 到底有什么关系。我的应用程序启动良好,但是当运行的后台应用程序太多时,它会收到内存警告并退出。 我只想显示一个提醒,要求用户退出某
摘自 Apple 的 View Controller 编程指南/高效管理内存; didReceiveMemoryWarning Use this method to deallocate all no
当 RAM 达到 x 内存量或调用 didReceiveMemoryWarning() 时,是否有办法减慢处理器速度? func didReceiveMemoryWarning() { sup
我开发了使用 MKMapView,MoviePlayer,Recording Videos,Downloading the Videos and Uploading videos at Amazone
我是一名优秀的程序员,十分优秀!