将 WKNSURLRequest 崩溃为?其他类型

2024-04-12

当我尝试强制转换 WKNSURLRequest (以及其他类,全部来自 WebKit 框架)时,我遇到了严重崩溃。

例如在游乐场:

import UIKit
import WebKit

final class Sigh: NSObject { }

NSClassFromString("NSObject") as? Sigh.Type

NSClassFromString("WKNSURLRequest") as? Sigh.Type

NSObject 的转换有效(即返回nil),但是 WKNSURLRequest 的转换因 EXC_BAD_ACCESS 崩溃 - 我假设它会返回nil以及。

有人知道可能是什么原因造成的吗?


WKNSURLRequest不继承自NSObject

@interface WKNSURLRequest : WKObject <NSCopying>

And WKObject是一个根类:

NS_ROOT_CLASS
@interface WKObject <WKObject>

与 Java 不同,Java 中所有类must继承自Object, Obj-C 并不要求所有类都继承自NSObject.

SwiftObj-C 桥明确支持NSObject因此也适用于它的子类,但我不确定它是否可以同样好地处理所有其他根对象。在导出方面(Swift 类暴露给 Obj-C),甚至不可能创建自己的根类。一个可以简单地暴露给 Obj-C 的 swift 类must继承自NSObject,所以我想说桥接器在设计时并未考虑到任意根类。

当然,这些都不能解释崩溃,这可能只是 Swift 编译器或 Swift 运行时中的一个简单错误。由于您不是静态引用这些类,而只是通过它们的名称来引用,因此一切都发生在运行时,并且 Swift 运行时可能只是假设无论发生什么NSClassFromString返回是一个子类NSObject当它尝试与该类交互时,这将在运行时失败,因为这种假设是完全错误的。在这种情况下,恕我直言,它仍然是一个错误,但它可以解释为什么会发生崩溃。

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

将 WKNSURLRequest 崩溃为?其他类型 的相关文章

随机推荐

  • Mongodb 文本搜索多个字段

    我有一个 mongodb 文档 如下所示 document title suburb id date 我想添加一个搜索功能 人们可以通过郊区和标题搜索文档 我正在使用文本搜索功能 我想要这样的东西 var search and search
  • 如何在多台机器之间共享 zsh 历史记录?

    我对在机器之间共享配置文件感到非常满意 但我发现我经常想在 zsh Ctrl R 中搜索 但我不记得在哪台机器上输入了命令 理想情况下 我希望它可以从我的任何机器中搜索先前命令的规范重复数据删除列表 鉴于我有时会在没有网络连接的情况下同时在
  • 绕过 OPENQUERY 的字符限制失败使用 EXECUTE

    我目前正在使用 SQL Server Management Studio 17 连接到 Oracle 数据库实例 然后提取一些数据并将其插入到我拥有的 SQL Server 表中 我尝试过执行以下操作 DROP TABLE IF EXIST
  • 如何从magento前端上传产品图片

    我正在尝试在管理面板中上传产品的图片 它工作正常 但现在我想在前端上传产品的图像 我的意思是客户可以从前端上传产品的图像 那么这怎么可能呢 首先在媒体 导入中上传图像 if isset FILES file name FILES file
  • 仅子级的 CSS 选择器,包括文本

    我需要选择 b 标签 但前提是这是 a 中唯一的内容 p 例如 选择 b 中 p p b hello b p 但不在 p b hello b world p 这可能吗 only child不这样做 CSS 选择器对文本节点一无所知 因此 对
  • 如何从命令行运行Matlab?

    是否可以从 Mac 命令行运行 Matlab 命令 The matlab脚本位于binMATLAB 应用程序包的子目录 在我的机器上 这意味着我可以像这样运行它 Applications MATLAB R2012a Student app
  • 来自存储桶的 AWS s3 V3 Javascript SDK 流文件 (GetObjectCommand)

    我查看了所有 AWS 码头和堆栈溢出 甚至去了谷歌的第 4 页 但我一生都无法弄清楚如何从 S3 流式传输文件 V3 的文档非常无用 我找到的所有示例都来自 V2 V3 使用的发送公共仅返回一个承诺 那么我如何获取流并通过管道传输它而不是等
  • 单击编辑文本时推送内容

    我到处寻找解决我的问题的方法 但找不到答案 问题就在这里 我有一个看起来像这样的布局 现在 当我单击编辑文本 搜索栏 时 我希望发生以下情况 软键盘基本上需要将整个屏幕的内容上推 使搜索栏位于顶部 列表视图位于其下方 以便在搜索内容时显示结
  • 为什么 css 变量会覆盖另一个文件的 css 变量?

    当我在各种 CSS 文件中定义变量并将这些文件包含在 HTML 文件中时 它会覆盖以前的变量 为什么会发生这种情况 假设我有 测试1 css root size of font 5rem logo font size var size of
  • 如何获取 HTML 元素节点的实际 CSS 属性值? [复制]

    这个问题在这里已经有答案了 据我了解获取计算样式 https developer mozilla org en US docs Web API Window getComputedStyle方法 它应该返回一个对象 允许访问 HTML 元素
  • 单击时删除点边框

    我正在使用此 CSS 来删除单击超链接时出现的虚线边框 a active a focus input outline 0 outline style none outline width 0 这工作正常 但不适用于具有背景图像的输入按钮 我
  • 接口、静态类问题

    我目前正在将所有游戏代码移动到另一个包中 以便在创建另一个类似游戏时可以简单地重用它 不过我在这方面遇到了一些问题 public interface Sprite abstract class AbstractSprite implemen
  • 有什么方法可以在 Jenkins 中获取 Gitlab 管道工件吗?

    我在gitlab中有一个项目 该项目会在存储库中的每次签入时构建 并在 gitlab 管道成功时创建构建工件 我想在我的詹金斯管道工作中获得这些构建工件 有什么办法可以做到这一点吗 我在 Jenkins 中找不到任何插件来执行此操作 任何帮
  • setInterval 不起作用(Javascript)

    我正在尝试使用 JavaScript 中的 setInterval 定期重绘画布 但是 当我调用 setInterval 函数时 我传递给它的函数只运行一次 这是我的代码的简化版本
  • 无法打开下载保存对话框

    使用下面的代码我无法显示打开 另存为文件对话框 public void ProcessRequest HttpContext context string link context Request QueryString Link stri
  • 在 google app engine python 中设置 cron 作业

    我刚刚开始使用 Google App Engine 所以我仍在学习如何配置所有内容 我编写了一个名为 parsexml py 的脚本 我希望每 10 分钟左右运行一次 该文件位于我的主目录中 与 main py app yaml 等一起 据
  • 自动添加或删除 Woocommerce 购物车中的免费产品

    我正在尝试创建代码 一旦客户达到购物车中的特定价格点 该代码就会自动将商品添加到客户的购物车中 如果他们只订购虚拟产品 我试图排除这种情况的发生 因为 免费礼物 仅适用于正在发货的产品 我使用的代码是以正确的金额添加免费礼物 但并不排除任何
  • 如何以 4/6/7 角度传递表单提交上的所有选中复选框值

    我想在组件中获取表单的所有已检查项目而不使用change or click 功能 因为它无法获取已检查的项目 这是我在 TS 中的数组 PartyRoles Id 1 Name Vendor Checked true Id 2 Name C
  • VSCode 中的 Flutter 初始化

    我一直在使用 VS Code 开发一个 flutter 项目 当我今天打开我的项目时 有一条通知显示 正在初始化 flutter 这可能需要几分钟 然后就被击中了 此外 flutter run 和 flutter doctor 等所有命令都
  • 将 WKNSURLRequest 崩溃为?其他类型

    当我尝试强制转换 WKNSURLRequest 以及其他类 全部来自 WebKit 框架 时 我遇到了严重崩溃 例如在游乐场 import UIKit import WebKit final class Sigh NSObject NSCl