多线程 ViewController 中的 UIWebView

2023-11-24

我在视图控制器中有一个 UIWebView,它有以下两种方法。问题是,如果我在第二个线程完成之前弹出(重新点击导航栏)此控制器,应用程序将在 [super dealloc] 之后崩溃,因为“尝试从主线程以外的线程获取 Web 锁或Web 线程。这可能是从辅助线程调用 UIKit 的结果。”。任何帮助将非常感激。

-(void)viewDidAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(load) object:nil];
    [operationQueue addOperation:operation];
    [operation release];
}

-(void)load {
    [NSThread sleepForTimeInterval:5];
    [self performSelectorOnMainThread:@selector(done) withObject:nil waitUntilDone:NO];
}

我有相同的解决方案,其中后台线程是最后一个版本,导致视图控制器的释放在后台线程中发生,最终导致相同的崩溃。

以上[[self retain] autorelease]仍然会导致最终释放发生在后台线程的自动释放池中。 (除非自动释放池中的释放有什么特殊之处,否则我很惊讶这会产生影响)。

我发现这是我的理想解决方案,将此代码放入我的视图控制器类中:

- (oneway void)release
{
    if (![NSThread isMainThread]) {
        [self performSelectorOnMainThread:@selector(release) withObject:nil waitUntilDone:NO];
    } else {
        [super release];
    }
}

这确保了release我的视图控制器类的方法始终在主线程上执行。

我有点惊讶的是,某些只能从主线程正确释放的对象还没有内置这样的东西。哦,好吧......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多线程 ViewController 中的 UIWebView 的相关文章

  • iPhone - ShareKit 、 SHKm 给出“找不到文件”的编译器错误

    我在使用 ShareKit Integrated 编译我的 iphone 项目时遇到了这个问题 我正在研究这个问题 到目前为止一切都工作正常 突然现在它给了我错误 在 SHK m 文件中 import include objc objc c
  • iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

    我有一个 UITableView 有时需要您触摸它两次才能选择一个单元格 更多细节 仅当表格一直向上或一直向下滚动后才需要两次触摸 只需第二次触摸即可呼叫didSelectRowAtIndexPath 当表格以自然的 向上滚动位置 打开时
  • Lua表在内存中是如何处理的?

    lua如何处理表的增长 是否相当于ArrayList在Java中 IE 需要连续的内存空间 并且当它变得大于已经分配的空间时 内部数组被复制到另一个内存空间 有什么聪明的方法来引导吗 我的问题是 表是如何存储在内存中的 我不是问如何在 Lu
  • 如何自定义 NSSlider

    我正在尝试在 Cocoa 中实现一个具有 5 个值的自定义滑块 查看我的演示项目 可以在此处下载 http s000 tinyupload com index php file id 07311576247413689572 http s0
  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • iPhone - 创建图像网格列表

    我正在开发一个应用程序 它从网站获取图像并使用网格视图向用户显示 例如Apple的照片应用程序 当您点击图像时 我会推送一个显示图像信息和其他内容的视图控制器 实现这个的更好方法是什么 我想到了自定义 UITableViewCell 我见过
  • 使用 Mono Touch 的 Iphone 键盘顶部带有完成按钮的工具栏?

    我需要使用 UIkeyboard type 数字键盘在工具栏上添加完成按钮 以便在单击完成按钮时退出键盘 我使用了输入附件视图 但它也添加到普通键盘 我需要在我有数字键盘的地方添加这个 例如 我有一个文本字段 它只需要我需要的数字 除了我不
  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • 在 UITableviewCell 高度动画的同时动画 CALayer 阴影

    我有一个 UITableView 我正在尝试使用它来展开和折叠beginUpdates and endUpdates方法并在发生时显示阴影 在我的自定义 UITableViewCell 中 我有一个图层 我为其创建阴影layoutSubvi
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • iPhone,使用 isKindOfClass 是否被认为是不好的做法?

    例如 如果有一个 处理所有 类型的方法 if obj isKindOfClass class1 else if obj isKindOfClass class2 etc 这是不好的做法吗 是否有更简洁的替代方案或更好的方法来构建代码 在运行
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 使用 Objective-C 在 iPhone 应用程序中显示或隐藏 UIButton

    我在用UITextView编辑文本 我想用两个UIButtons编辑并保存 最初我想显示编辑UIButton 当用户单击编辑时我想显示保存UIButton 当内容成功保存后 我不想再显示保存按钮 我是一名 C 编码员 在 C 中我曾经这样做
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • 通过 iPhone 连接到 AT&T 无线网络的谷歌静态地图无法工作 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近 当我的 iPhone 连接到 AT T 无线网络时 我在检索静态地图时遇到了问题 但是 当我连接到本地 WiFi 时工作正常 上周日停止工作了几
  • 为什么 GDB 调试器不断冻结 Xcode 4?

    这真是一个奇怪的错误 我正在开发一个使用相机源的 iPhone 项目 并通过 OpenGL 着色器运行它以对其应用效果 然而 每次我在代码中简单地创建一个新的 GLfloat 时 调试器都会在启动时冻结 我无法复制和粘贴文本 因为整个 XC

随机推荐

  • 如何传递列表元素作为引用?

    我将列表的单个元素传递给函数 我想修改该元素 从而修改列表本身 def ModList element element TWO l list l append one l append two l append three print l
  • 在 iOS/Swift 中创建并导出为 Base64 的 RSA 公钥在 Java 中无法识别

    TL DR 在 iOS 中生成并存储在钥匙串中 导出为 base64 并发送到 java 后端的 RSA 公钥无法识别 我正在 iOS 应用程序中实现聊天加密功能 并使用对称 非对称密钥来处理它 无需过多讨论细节 在后端 我使用用户的公钥来
  • 将.net core 5.0发布到单个exe文件中

    有谁能够帮助我 我正在尝试将我的 net core 控制台应用程序发布到单个文件中 我正在使用这个命令 dotnet publish r win x64 c Release p PublishSingleFile true p Publis
  • 如何在不登录 Xcode 8 的情况下构建 IPA

    我已经在SO和其他地方进行了搜索 我只发现这个答案的旧版本似乎不再起作用 还有大量其他内容甚至与最新版本不相关 长话短说 我们有一位开发人员向我们提供了 IPA 但他不想加入我们的开发人员小组 我告诉他给我们发送一个未签名的 IPA 但我们
  • 如何访问 Windows 中的特殊目录?

    在 Windows 上检索用户桌面 文档文件夹和其他系统文件夹的 C 语法是什么 您可以使用环境 GetFolderPath与环境 特殊文件夹枚举 例如 string desktopPath Environment GetFolderPat
  • WPF MVVM KeyBinding 无法立即识别并且并不总是有效

    无论出于何种原因 当我的 WPF 应用程序加载时 我的 UserControl 的 KeyBindings 就无法工作 它们在我按下表单上的按钮后起作用 但当我通过单击或 alt tab 键或移动或类似方式将焦点设置到表单时则不起作用 当它
  • Angular7 - 无法绑定到“dataSource”,因为它不是“mat-table”的已知属性

    我正在使用 Angular 7 0 2 在尝试使用以下命令创建表时遇到此错误角材料 无法绑定到 dataSource 因为它不是 mat table 的已知属性 应用程序路由 module ts import NgModule from a
  • 全新安装 Rails 并收到 OpenSSL 错误:“已经初始化常量 OpenSSL”

    我在尝试使用 RoR 时遇到了困难 我参加了 Ruby Installfest 但遇到了一个问题 我认为是 openssl bundle 我正在使用 RVM 并运行 Rails 5 0 1 和 Ruby 2 4 0 我尝试使用完全删除 重新
  • 如何在 Ruby on Rails 上制作“数据透视表”?

    首先 我想提一下 我对 Ruby 和 Rails 完全陌生 我才刚开始学习 所以如果我的问题看起来有点不清楚或太宽泛 我深表歉意 我正在尝试做一些简单的事情 我认为 即旋转表格 我有一个看起来像这样的表 Name Product ID Am
  • 使用颜色图作为第四维(x、y、z 的函数)绘制 3D 表面

    我正在尝试绘制一个 3d 表面 其中三个维度中的每一个都位于单独的值数组中 并且每个坐标处的表面颜色是 x y z 的函数 一种 numpy pcolormesh 但是 4D 而不是 3D 3D 图由下式给出 from mpl toolki
  • 在 Delphi 中查找未使用的(又名“死的”)代码

    是否有任何工具可以确定是否使用了函数 过程 方法 整个类 我见过一些工具可以帮助知识渊博的开发人员追踪未使用的代码片段 大多数适用于 Delphi 以外的语言 但大多数都有一个陡峭的学习曲线和 或需要大量的挖掘来确定是否使用了代码片段 据称
  • 使用 pandas read_html 提取 href

    作为我工作的一部分 我需要检查这个page定期获取特定文件 我发现我可以使用 pandas 的方法read html成功地将表读入数据帧 这很方便 因为我可以轻松地通过关键字查询特定文档 我现在遇到的问题是 此方法无法解析我需要的链接 而是
  • Windbg 首先连接,然后卡在“调试对象未连接”上。内核调试期间的消息

    我正在尝试进行 Windows 内核调试 因此我为此目的设置了两台机器 HOST DEBUGGER 运行windbg调试器的计算机 TARGET DEBUGEE 正在调试的计算机 HOST 和 TARGET 都运行 Windows 7 32
  • 按钮背景选择器

    如果按下按钮 我尝试切换按钮的背景 我构建了一个选择器 就像这里建议的答案一样 具有不同颜色的标准 Android 按钮 最后我想放GradientDrawables在里面 但出于调试目的 我只是设置了一种颜色 以检查它是否有效 这是我的选
  • 从 HTMLDocument 获取所有 html 作为字符串

    我用 Java 编码 有谁知道我如何获取 javax swing text html HTMLDocument 的内容作为字符串 这就是我到目前为止所得到的 URL url new URL http www test com HTMLEdi
  • MySQL 用户定义函数

    我有一个表包含几列 column 1 column 2 和column 3 我将一个新列添加到名为 分数 的表中 我想做的是根据这三列计算分数并轻松调整参数 假设我的分数公式如下所示 score a column 1 b column 2
  • 动态更改 gridview 横轴计数以填充 flutter 中的动态列

    我正在使用 flutter 框架开发 gridview 以实现动态列计数 但没有得到解决方案 我尝试过将 GridView count 和 Gridview builder 与 itembuilder 一起使用 但没有得到预期的结果 任何帮
  • PHP:如何将时间字符串与日期('H:i')进行比较?

    我将时间保存在数据库中 例如晚上 7 30 作为 varchar 字段 我想检查这个时间是否大于现在的时间 我将数据库时间字符串转换为 19 30 现在我想做这样的事情 my time 19 30 if my time gt date H
  • 是否可以在 Chart.js 中生成圆形雷达图?

    当我绘制标准 Chart js 雷达图时 轴是多边形 不是圆形 例如 是否可以将轴做成圆形 像这样 编辑 2021 10 27 Chart js v3已删除scale有利于的选择options scales r 这是使雷达网格呈圆形的更新方
  • 多线程 ViewController 中的 UIWebView

    我在视图控制器中有一个 UIWebView 它有以下两种方法 问题是 如果我在第二个线程完成之前弹出 重新点击导航栏 此控制器 应用程序将在 super dealloc 之后崩溃 因为 尝试从主线程以外的线程获取 Web 锁或Web 线程