- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 UIWebView 的 View ,它正在加载谷歌地图(所以有很多 JavaScript 等)。我遇到的问题是,如果用户在 Web View 完成加载之前点击导航栏上的“后退”按钮,我不清楚如何整齐地告诉 Web View 停止加载然后释放它,而不会得到发送到已释放实例的消息。我也不确定 Web View 是否喜欢其容器 View 在完成之前消失(但如果用户在加载之前点击后退按钮,我别无选择)。
在我的 viewWillDisappear 处理程序中,我有这个
map.delegate=nil;
[self.map stopLoading];
这似乎可以处理大多数情况,因为将委托(delegate)置零会阻止它向我的 View Controller 发送 didFailLoadWithError 。但是,如果我在 View 的 dealloc 方法中释放 Web View ,有时(间歇性地)我仍然会收到发送到已释放实例的消息,这似乎与实际页面中运行的 javascript 有关,例如:
-[UIWebView webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]: message sent to deallocated instance 0x4469ee0
如果我只是不释放 webview,那么我就不会收到这些消息,尽管我猜我会泄漏 webview。
如果我不发送“stopLoading”消息,而只是在 viewWillDisappear 中释放 webview,那么我会看到如下消息:
/SourceCache/WebCore/WebCore-351.9.42/wak/WKWindow.c:250 WKWindowIsSuspendedWindow: NULL window.
可能相关,我有时(再次完全间歇性地)遇到一个丑陋的heisenbug,点击其他 View 导航栏上的后退按钮将弹出标题,但不会弹出 View 。换句话说,我在堆栈上留下了 View n 的标题,但显示的 View 仍然是 View n+1 (结果是你被困在这个屏幕上,无法返回到 Root View - 你可以转到其他方向,即推送更多 View 并弹回未正确弹出的 View ,只是不弹回 Root View 。唯一的出路是退出应用程序)。在其他时候,对相同 View 进行相同的推送和弹出序列效果很好。
这个特别的让我发疯。我认为这可能与加载 Web View 之前 View 消失有关,即在这种情况下,我怀疑它可能会在内存上乱写乱画并混淆 View 堆栈。或者,这可能是完全不相关的,并且是其他地方的错误(我从来无法在调试构建模式下重现它,只有当我无法使用 gdb 观看它时,它才会在发布build设置中发生:-)。从我的调试运行来看,我认为我没有过度发布任何东西。而且我似乎只有在某个时候点击了具有 Web View 的 View 才能触发它,并且此后不会立即发生。
最佳答案
对此的一个变体应该可以解决泄漏和僵尸问题:
- (void)loadRequest:(NSURLRequest *)request
{
[self retain];
if ([webView isLoading])
[webView stopLoading];
[webView loadRequest:request];
[self release];
}
- (void)webViewDidStartLoad:(UIWebView *)webView
{
[self retain];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self release];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
[self release];
}
- (void)viewWillDisappear
{
if ([webView isLoading])
[webView stopLoading];
}
- (void)dealloc
{
[webView setDelegate:nil];
[webView release];
[super dealloc];
}
关于iphone - 如何在 viewWillDisappear 中安全地关闭正在加载的 UIWebView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789984/
在我的 java 代码中,我做了类似的事情: int sleep = 0; sleep(sleep); sleep++; 被bos指出不好。它不能在 php 中正常工作。 在 java 中使用上述代码
我有一个程序使用第 3 方库进行一些计算,我在与主应用程序不同的线程上启动该程序。不幸的是,此计算可能需要很长时间,并且不提供进度更新和取消的接口(interface)。 为了拥有这样的界面,我想创建
C++ 是否有任何等效于 python 的函数 os.path.join?基本上,我正在寻找将文件路径的两个(或多个)部分组合在一起的东西,这样您就不必担心确保这两个部分完美地结合在一起。如果它在 Q
我正试图站起来(非商业)web application使用 neo4j Community 3.5.2 作为后端。 应用程序以两种方式与图形交互: 服务器端(安全的)用 flask 编写新的节点和关系
我正在开发一个将有许多外部用户的在线应用程序。至于现在,我的连接方法是为所有用户托管一个中央数据库,而他们从自己的服务器文件连接。 方法: PHP 连接文件(托管在他们的服务器上;文件由我提供) >>
我创建了一个将所有事件通知代码转换为字符串的函数。真的很简单。 我有一堆常量,比如 const _bstr_t DIRECTSHOW_MSG_EC_ACTIVATE("A video window i
我想将(附加)信息从过滤器传递到资源。我目前尝试这样做的方式是,在 Filter 中: getContext().getAttributes().put("additionalInformation"
我想计算转换系数。为此,我必须除以例如的最大值。 ushort 为 uchar 的最大值。 我想通过将参数传递给函数或类型名来动态地执行此操作。然后我想选择最大值并执行计算。 有两个问题: 如何动态选
我希望我的用户在用 Java 请求列表时能够编写自己的过滤器。 选项 1) 我正在考虑将 JavaScript 与 Rhino 结合使用。 我将用户的过滤器作为 javascript 字符串获取。然后
(安全地)提供来自不同域的图像是否符合 PCI 标准?我搜索了 PCI DSS 2.0 PDF,但没有找到任何引用资料。 最佳答案 图像不符合 PCI 合规性。 PCI DSS covers the
我们正在将 spring 和 hibernate 用于 web 应用程序:该应用程序有一个购物车,用户可以在其中放置商品。为了保存不同登录名之间要查看的项目,购物车中的项目值存储在表中。提交购物车时,
我正在为多个客户创建一个具有电子商务元素的 Rails 应用程序 - 我希望这些客户能够在管理区域中指定计算运费的公式;因为方法可能不同。 让我们假装一下,我允许他们输入 ruby 代码,然后我稍
我正在 Eclipse 中开发一个 Java 项目,使用 Maven 构建和管理依赖项。该项目分布在 5 个 Eclipse 项目中,其中一个是父 POM。我正在研究基于另一个团队实现的更复杂服务器的
我想在 ADO.NET 数据服务中存储每线程数据。在线程特定的静态变量上使用 ThreadStatic 属性是否安全,或者我会遇到问题吗?我担心的是,我的 ThreadStatic 变量在请求完成并且
Stackoverflow 上至少有一篇与此主题相关的帖子:Generate password in python 你会发现这个主题甚至在 PEP 中也受到了一些批评。这里提到:https://www
对于我工作中的一个项目,我需要创建一个独立的 Python 安装(来自源代码)。然而,完整的目录占用大约 90MB 的磁盘空间,虽然不多,但太多了,无法一遍又一遍地复制。 我可以从自定义 python
例如,我有一张学生表,我有一本 Python 字典 mydict = {"fname" : "samwise", "lname" : "gamgee", "age" : 13} 我怎样才能安全地生成一
我经常在代码中遇到使用 memset 手动零初始化的 POD 结构,如下所示: struct foo; memset(&foo, 0, sizeof(foo)); 我检查了 C++11 标准,它说:“
我是一名优秀的程序员,十分优秀!