Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 对象释放速度不够快,导致应用程序重新启动崩溃_Iphone_Objective C_Ios_Release - Fatal编程技术网

Iphone 对象释放速度不够快,导致应用程序重新启动崩溃

Iphone 对象释放速度不够快,导致应用程序重新启动崩溃,iphone,objective-c,ios,release,Iphone,Objective C,Ios,Release,我有一个应用程序,其中我有5套动画,我存储在一个数组中。点击按钮后,动画将随机播放。这一切都是完美的工作,但我注意到一个错误,当我退出应用程序,并立即重新打开,我会看到我的主视图,然后它会跳转到我的第二个视图,其中有动画。(这种情况不应该发生,因为您必须点击主视图才能在第二个视图中进行模式交换。如果我与它交互,一切都能工作几秒钟,那么它将关闭,而没有崩溃日志 我终于意识到,某些对象的释放速度一定不够快,因为如果我关闭应用程序并等待三秒钟,然后重新打开,一切都会正常执行 我不想写下代码来展示,因为

我有一个应用程序,其中我有5套动画,我存储在一个数组中。点击按钮后,动画将随机播放。这一切都是完美的工作,但我注意到一个错误,当我退出应用程序,并立即重新打开,我会看到我的主视图,然后它会跳转到我的第二个视图,其中有动画。(这种情况不应该发生,因为您必须点击主视图才能在第二个视图中进行模式交换。如果我与它交互,一切都能工作几秒钟,那么它将关闭,而没有崩溃日志

我终于意识到,某些对象的释放速度一定不够快,因为如果我关闭应用程序并等待三秒钟,然后重新打开,一切都会正常执行

我不想写下代码来展示,因为这更像是一个头脑风暴的问题。我希望任何能为我指明正确方向的见解。我改变了很多代码,以摆脱方便的方法,并定义了所有变量,然后在dealloc中发布


有没有办法真正告诉应用程序在退出时杀死所有东西?它没有设置为在后台运行,所以这有点奇怪。感谢你的帮助,我对这一点还是新手,正在学习!

默认情况下,所有应用程序都可以进入后台。正常情况下,它们不会在后台执行任何操作,但会保持在冻结状态,当你再次打开它们时,你的程序不会重新启动,它只是从它停止的地方重新开始

任何设置为动画代理的对象都可能不会被释放,因为在动画完成之前,都会保留该对象

您可以向应用程序委托添加
ApplicationIdentinterBackground:
方法,以便在应用程序进入后台时获得通知,但具体需要做什么取决于应用程序的设计。您还可以添加
ApplicationWilenterForeground:
以在重新启动时执行任何需要不同的操作,而不是要重新开始


您可以通过启动一个持续时间为0.0的新动画来强制完成动画(如果由于某些原因无法完成,则可以非常短).

默认情况下,所有应用程序都可以进入后台。通常情况下,它们不会在后台执行任何操作,但会保持在冻结状态,当您再次打开它们时,您的程序不会重新启动,它只会在停止的位置重新启动

任何设置为动画代理的对象都可能不会被释放,因为在动画完成之前,都会保留该对象

您可以向应用程序委托添加
ApplicationIdentinterBackground:
方法,以便在应用程序进入后台时获得通知,但具体需要做什么取决于应用程序的设计。您还可以添加
ApplicationWilenterForeground:
以在重新启动时执行任何需要不同的操作,而不是要重新开始


您可以通过启动一个持续时间为0.0的新动画来强制完成动画(如果由于某些原因无法完成,则可以非常短).

如果只有当你的应用程序转到bkgnd并返回时才会发生这种情况,并且你不介意应用程序每次返回时都重新启动,那么只需将
UIApplicationExitsOnSuspend放入你的应用程序的plist
。在我所有的情况下,这些和其他不好的事情都会发生在从bkgnd返回的应用程序上,这是有帮助的

当您双击按钮时,可能仍会在按钮上看到应用程序,但它实际上已停止并将重新启动。显示在按钮上的应用程序并不总是必须运行或存储在我学习的bkgnd中


注:不要忘记将UIApplicationExitsOnSuspend的值设置为YES

如果只有当你的应用程序转到bkgnd并返回时才会发生这种情况,并且你不介意应用程序每次返回时都重新启动,那么只需将UIApplicationExitsOnSuspend放入你的应用程序的plist中即可往返于bkgnd,这很有帮助

当您双击按钮时,可能仍会在按钮上看到应用程序,但它实际上已停止并将重新启动。显示在按钮上的应用程序并不总是必须运行或存储在我学习的bkgnd中


注:别忘了将UIApplicationExitsOnSuspend的值设置为YES

好的,在整个周末都在工作,并做了更多的研究,将我的应用程序的裸体版本与我的预发布版本进行比较之后,我追踪到我正在使用的Flurry Analytics api的内存泄漏。显然,我遇到了与本文相同的问题:。我通过将这些可选方法设置为false来解决这个问题,因为它们在应用程序终止后需要额外的时间来发送数据,并且根据连接情况需要几秒钟

荧光分析法

/*
 optional session settings that can be changed after start session
 */
+ (void)setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose;    // default is YES
+ (void)setSessionReportsOnPauseEnabled:(BOOL)setSessionReportsOnPauseEnabled;  // default is YES

希望这能帮助其他和我有类似经历的人!

好吧,在整个周末都在做这项工作,并做了更多的研究,将我的应用程序的赤裸裸版本与我的预发布版本进行比较之后,我追踪到了我正在使用的Flurry Analytics api的内存泄漏。显然,我遇到了与本文相同的问题:通过将这些可选方法设置为false解决了这个问题,因为它们在应用程序终止后需要额外的时间发送数据,并且根据连接情况需要几秒钟

荧光分析法

/*
 optional session settings that can be changed after start session
 */
+ (void)setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose;    // default is YES
+ (void)setSessionReportsOnPauseEnabled:(BOOL)setSessionReportsOnPauseEnabled;  // default is YES

希望这能帮助其他和我有类似经历的人!

感谢insite,我今晚会做这件事,让你知道,谢谢!!!感谢insite,我今晚会做这件事,让你知道,谢谢!!!谢谢你的建议,我会在下班后做这件事,让你知道事情的进展,谢谢ks感谢您的帮助,不幸的是,这不起作用。我正在使用下面推荐的ApplicationIdentinterBackground方法来了解情况。谢谢!谢谢您的更新-请随时通知我们-因为我很惊讶您的应用程序没有像您在发送到bkgnd时所说的那样退出。我以前没有见过这种情况。您确定它是真的吗