问题标签 [viewdidunload]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 如果我收到内存警告,在哪里发布我的所有视图?
如果我收到内存警告,我必须在哪里发布我的所有视图和数据?
我是否必须在
- (void)didReceiveMemoryWarning
或在
- (void)viewDidUnload
objective-c - 如何在应用程序处于活动状态时防止页面卸载
我的应用程序中有几个选项卡。我目前面临一个问题,即每当内存不足时我的页面就会被卸载(尤其是当我在我的应用程序中调出相机时)。
有没有办法减轻这种情况并防止发生卸载?或者有什么方法可以拦截卸载过程,以便可以做一些事情而不是让页面被卸载?
objective-c - 我需要调用 [super viewDidUnload] 吗?
我已经看到了一些可以调用的Apple示例,[super viewDidUnload];
而有些则没有。我读了一篇文章(几个月前,所以我不记得网址了)说调用[super viewDidUnload];
是不必要的,但除此之外没有解释。
是否有明确的理由为什么或为什么不告诉 super viewDidUnload
?
而且,(如果应该这样做)我是否在将所有属性设置为nil
、 之后或是否重要之前调用 super ?
谢谢!
ios - 如何使视图功能在滚动视图中工作
请看下面的代码
我bViewController
现在访问,我想在离开时显示警报bViewController
,但viewDidUnload
不起作用。
- (void)viewWillDisappear:(BOOL)animated
也不起作用。
那么哪个可以工作?
ios - 添加到 UINavigationController 时未释放 UIViewController
下面是减少的代码,以演示我遇到的问题。
我分配并初始化一个视图控制器。init 方法是标准的Objective C init,所以视图控制器还没有做任何事情。然后我创建了一个使用新创建的视图控制器初始化根的 navigationController。然后我释放视图控制器,因为导航现在有了它,我不需要它。在下一行 nav 被释放,我希望视图控制器的 dealloc/viewDidUnload 会被调用。相反,他们不是。如果我不将sportsViewController 放在nav 控制器上,则在sportsViewController 释放后会调用dealloc。我究竟做错了什么?(顺便说一句,我还有其他类似的代码可以正常工作)
c# - MonoTouch - 获取已连接插座的列表
我正在开发一个大型 iOS 应用程序,并且正处于进行一些清理/性能调整的阶段。
我需要做的一件事是ViewDidUnload
在任何地方覆盖并采取适当的措施,而最常见的事情是在 to 中设置所有UIViewController
出口null
。有没有办法通过 MonoTouch API 获取连接的插座列表UIViewController
?这将使这个过程更加健壮,因为如果我添加新的网点,我不需要做任何事情。
注意:我知道将所有出口设置为 null 不会捕获每个引用的视图,但应该得到很大一部分。
ios - 向/从 NSNotificationCenter 添加/删除观察者的最佳实践
向/从中添加和删除观察者的最佳做法是什么NSNotificationCenter
?
我想知道self
作为观察者添加viewDidLoad
和删除是否self
就viewDidUnload
足够了。或者也许我也应该删除self
。dealloc
也许需要考虑低内存条件。我可以看到添加viewDidLoad
和删除dealloc
存在问题:viewDidUnload
由于内存不足而被调用......然后viewDidLoad
在再次显示视图时被调用......现在self
已经被添加为观察者两次而没有被删除(因为dealloc
不是称为)。
注意:我只考虑一个基本示例,其中self
指的是UIViewController
子类。
iphone - iPhone - 如何处理内存不足的情况
当应用程序收到内存不足警告消息时,可能会发生 3 种情况:
- 您的应用刚刚启动,用户没有做任何特别的事情
- 应用程序正在运行并且存在当前上下文
- 该应用程序在后台运行一些上下文
因此,当您收到此消息时,您应该释放内存...但是在哪里?如何 ?
我明白那个 :
initWith
.....必须设置默认的静态值。viewDidLoad
必须加载任何非静态对象didReceiveMemoryWarning
必须释放那些非静态对象- 我看不出在
viewDidUnload
...中可以/必须做什么
我猜某些保留值必须在某处设置为零……在 didReceiveMemoryWarning 中?
并且必须对活动上下文(屏幕的位置,显示的文本,...)做些什么,所以当再次调用 viewDidLoad 时,这些东西会再次出现在 memoryWarning 调用之前的位置?
我的意思是,想象两种情况:
方案 1
- 你正在做某事……你在一个字段中写了一些文本,没有保存它,打开另一个视图,在屏幕上移动了一个视图。
- 您在后台发送应用程序。
- 然后将 memoryWarning 发送到应用程序。
- 之后,用户将应用程序发送到前台:它应该显示他们在退出时的内容,在当前视图上和以前的视图上一样,但是如果所有内容都已发布,你该怎么做?
方案 2
- 你正在做某事……你在一个字段中写了一些文本,没有保存它,打开另一个视图,在屏幕上移动了一个视图。
- 然后将 memoryWarning 发送到应用程序。
- 您不想丢失视图中的内容,也不想丢失先前视图中的内容。您不希望屏幕因为释放/重新加载功能而闪烁。你怎么处理这个?
那么当这些内存警告发生时,除了将内容写入磁盘以稍后显示它们之外,您还有其他选择吗?
你什么时候再加载这些?我有一个加载(viewDidLoad)的viewController,接收一个memoryWarning,卸载(viewDidUnload),但是当回到它时,不会再次调用viewDidLoad?这必须在 viewWillAppear 中完成吗?我是否必须认为每当 viewWillAppear 被触发时,我可以假设应该在其上显示的内容已加载?
任何帮助,即使是有价值的链接,都会很棒!
谢谢您的帮助。
ios - 在 didReceiveMemoryWarning 和 viewDidUnload 之后使用 viewDidLoad
当 meory 警告发生时,我仍在尝试了解管理视图的过程。我在这个答案中收到了一些很好的信息,但我仍然有问题。
假设我有一个视图控制器VC1,其中包含一个由视图控制器VC2 管理的子视图(它具有该子视图它的视图属性)。最初,如果我想将 VC2 视图放入另一个 VC1 视图中,那么我可能会这样做:
稍后,在 VC2 中收到内存警告。所以调用了VC2的didReceiveMemoryWarning,接着调用了VC2的viewDidUnload。
这就是我的理解结束的地方(如果我已经说的是正确的话!)
我期望神奇地发生的是 VC2 中的视图及其资源可以被释放(例如,它可能是标签栏控制器引用的一个视图,但当前未显示),如果它应该可以正常工作都可以通过 VC2 的 viewDidLoad 方法重新创建。假设暂时看不到VC2的视图,应该是release了。
它究竟是如何发布的?didReceiveMemoryWarning 在 VC2 中执行。VC2是否发布了自己的观点?如果没有,假设会发生什么。
第二个问题,如果VC2的视图已经发布,假设再次需要该视图(比如有人在标签栏上选择了相应的标签)。我的理解是,如果引用了 VC2 的view 属性,则会调用 VC2 loadView 。最初,当 VC1 使用属性引用将其添加为子视图时,它被引用。标签栏控制器可以通过视图控制器 VC2 引用它来调用它,该控制器位于标签栏控制器的 viewControllers 数组中。所以我猜标签栏控制器将引用视图属性,这会导致调用 VC2 loadView。
好吧,我完成了第二个问题,并且可能同时回答了它。有人可以确认我是否理解正确吗?
此外,我仍然不清楚(如我的第一个问题)VC2 视图应该如何以及在何处发布。
是否有人可以向我指出一个教程,该教程介绍了发布视图和视图层次结构以响应内存警告的整个过程,还解释了在需要时如何重构已发布的视图?这真的有助于我理解这个过程。
ios - viewDidUnload 中的内存管理 - 我应该将数组和对象都归零吗?
我有一个表格视图来加载来自互联网的新闻。我并试图将 viewDidUnload 中的所有属性都归零。
每次应用程序在 viewDidUnload 中崩溃。如果我评论 self.iconDownLoader = nil;,那就没问题了。那么谁能告诉我为什么会发生这种情况?谢谢。
---------------------NewsViewController.m-------------------------
------------------------------------IconDownLoader.m--------------------