Objective-C 中的“超级”是什么? (自我!=超级)?

2024-02-16

我已阅读下面的问题和故事SEEMS simple:

Objective-C 中的 super 到底是什么? https://stackoverflow.com/questions/3095360/what-exactly-is-super-in-objective-c

Yet ...

- (id) init
{
    NSLog(@"self=%p, super=%p", self, super);
}

打印出“self=0xa83dc50,super=0xbfffe8d0”。地址不一样???!?!?

第二个地址看起来像是“特殊值”之类的。这是什么意思?

感谢 bbum 指出该值是编译器用来实现“超级”行为的特殊结构的堆栈地址。


我可以调用 [super init] 并且该调用似乎有效,或者至少没有爆炸......不会立即发生。调用 [((id)0xbfffe8d0) init] 失败,并出现 EXC_BAD_ACCESS。

然后是非常奇怪的部分...... 我有一段代码,由于没有任何解释的原因,抛出“NSGenericException:集合在枚举时发生变异”异常。在不同的对象(基本上是一个具有指向 NSEnumerator 的指针的包装器)内,注释掉对“[super init]”的调用会导致异常不会发生。如果可以的话,我愿意为这个令人费解的问题的答案提供 $$$ 奖励。

“id sus = (id)0xbfffe8d0”...这也会导致“集合被修改”。 ... WTF?好的,所以我针对这种怪异行为发布了第二个问题......


你正在惹恼幕后的那个人,他正在为此惩罚你......:)

super确实有点编译器的魔力。当你说[super doSomething],编译器将发出一个调用objc_msgSendSuper()代替objc_msgSend()。大多数时候——有一些特殊情况。

一般来说,你应该治疗super as 仅是方法调用的目标。它不应该存储在任何地方,也不应该被视为任何东西but消息传递的目标表达。

事实上,使用super涉及存储的内容可能应该由编译器标记。

就您的错误而言,这听起来很像内存损坏、过度释放和/或并发发生。您需要提供更多与枚举相关的代码和其他相关代码以进一步推断。

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

Objective-C 中的“超级”是什么? (自我!=超级)? 的相关文章

  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • 苹果的外部配件(蓝牙)仅适用于 MFI 设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的学士论文的目标是通过蓝牙适配器将光串行设备连接到 iPad 目前我正在努力应对苹果的限制 我经常在网上看到我可以使用支持的配置文件 h
  • 自定义 UIPopoverController 视图背景和边框颜色

    是否可以更改弹出视图的边框颜色 导航栏样式 颜色和箭头样式 颜色 如果是这样 怎么办 如果有一些示例代码可用 那就太好了 iOS 7以上 可以更改backgroundColor of UIPopoverController这会影响导航背景颜
  • 如何在iOS8自定义键盘上方添加工具栏?

    My problem is write picture I really need you help Maybe inputAccessoryView inputAccessoryViwController can be used but
  • iOS:接收“304 Not Modified”响应时 AVPlayerItem 中的错误

    这是一个非常奇怪的错误 我有一个 tableView 每个单元格都使用AVPlayer从远程服务器流式传输视频 想象一下类似 Vine 的时间线 因此 当我滚动时 重复使用的单元格会使用新视频重新配置播放器 问题是 如果我非常快地来回滚动
  • 排除 Realm 模型类

    我的应用程序中配置了两个领域文件 我想存储我的Log将模型与其他模型分开保存为单独的文件 我的问题是我也看到了我的Log我不想要的默认 Realm 文件中的模型类 如何从给定的 Realm 文件中排除特定的模型类 我使用主 Realm 文件
  • 如何更改某些功能以兼容 iOS 10 或更低版本的 Snapchat 中的某些功能,例如相机视图控制器

    我正在制作一个视图控制器来制作像 snapchat 相机一样的相机视图控制器 我下面的代码在 iOS 11 或更高版本上完美运行 老实说 我并没有真正掌握我的代码 因为我只是按照这个像相机视图控制器这样的 snapchat 的教程进行操作
  • 无法将 (Timer!) -> Void 转换为 ((CFRunLoopTimer?) -> Void)! - 将 NSTimer 扩展转换为 Swift 3

    我正在尝试将我在项目中使用的 Pod 转换为 Swift 3 它不是我编写的 但原作者尚未更新它 所以我将它分叉为我自己尝试的任何内容 但 我在尝试将扩展名转换为NSTimer到斯威夫特 3 Cannot convert value of
  • MIDI 文件解析

    我们如何使用 Objective C 进行 MIDI 文件解析 在Java中用于MIDI文件解析的包名为javax sound midi Objective c 有什么东西吗 如果你们中有人回复的话将会有很大的帮助 提前致谢 您可以使用 C
  • 核心数据在没有明显原因的情况下恢复到之前的状态

    基于 Core Data 的 iOS 应用程序的一些客户报告称 他们偶尔会丢失数据 这些报告非常奇怪 这就是我想询问您对此的看法的原因 客户报告说 当他们在一段时间 几分钟 几小时或第二天 后重新打开应用程序时 他们的一些数据会丢失就像底层
  • AppleScript:对传递给 Firefox 的 URL 中的任意查询字符串值进行编码

    我很长一段时间都使用 Firefox 作为 PC 或 Mac 上唯一的浏览器 简而言之 我的问题是 我想在 mac 上使用 automator 创建一个服务 Applescript 使用translate google com 进行相当即时
  • Xcode 和 Waze 集成

    我正在尝试整合我的app with waze http www waze com 有人知道如何调用位智并发送坐标吗 我没有找到任何 API 或其他相关信息 void navigateToLatitude double latitude lo
  • 以编程方式进行排序时检索 ViewController 堆栈

    static func showMenuView parentVC UIViewController let storyboard UIStoryboard name Main bundle nil let resultController
  • Quickblox 聊天未进行身份验证

    我在我的应用程序中使用 Quickblox 进行一对一聊天 用户已经登录 但是当我尝试登录聊天时 出现以下错误 2014 03 31 12 42 09 532 MyChat 2175 3803 QBChat didNotAuthentica
  • NSLocale 货币符号,显示金额值之前或之后

    我在用StoreKit在我的应用程序中实现应用程序内购买商店 我有一个自定义设计 这意味着价格的值应该是白色的且较大的 货币符号较小 较暗并与价格值的顶部对齐 我可以使用以下命令毫无问题地获取货币符号NSLocale in SKproduc
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • 启动时运行后台任务

    我正在编写一个 iOS 应用程序 它使用 Dropbox Datastore API 在多个设备之间同步数据 在 Android 上 我可以告诉服务在启动时启动 这使其能够同步 设备关闭时可能发生的任何更改 我无法找到让我的应用程序在 iO
  • 播放声音无延迟 iOS

    我找不到如何以低延迟播放真实声音的方法 我尝试使用 AVFoundation 音频播放器 巨大的延迟大约 500 毫秒 所以我尝试创建系统声音 如果运气不好 延迟大约为 200 毫秒 虽然不多 但对我来说没有用 我最多需要 50 毫秒 确保
  • 为什么在 Excel for Mac 中使用 VBA 的输入框不显示提示文本?

    我一直在构建一个使用 Excel 跟踪学生成绩的系统 我在 Windows 下编写了它 一切正常 但是当我在 Mac 版本的 Excel 最新版 本 15 24 我相信 上测试它时 InputBoxes 只显示输入数据的标题和文本框 不显示
  • iPhone 中的 UIGlassButton

    有人使用 Glass Button 提交过申请吗 获得批准了吗 我正在尝试使用彩色圆形按钮 但不想使用这些技巧 如何在 iPhone 上设置按钮背景颜色 https stackoverflow com questions 372731 ho

随机推荐

  • 如何防止操作栏被切断?

    当我将手机升级到 Marshmallow 后 我制作的所有应用程序的操作栏都被切断了 该应用程序在 Lollipop 和 Kitkat 上运行良好 该应用程序基本上只有一个视图 并且在我更新后的手机上无法正确显示 上半部分被切断 https
  • SSIS LookUp Transformation高级编辑器(修改SQL语句)

    我对SSIS中的查找转换有一个疑问 复选框 修改SQL语句 和参数选项有什么用 提前致谢 泽兰 感谢您的回答高德曼 我有一个场景 比如我的查找 参考 表正在访问 DB2 并且在 DB2 中我们有多个架构 我的要求是将架构名称作为参数传递给查
  • 使用 Maven 生成类路径文件

    我想从 pom xml 依赖项生成一个类路径文件 我需要它 所以在测试期间我有所有依赖项的类路径 稍后打包成一个包 maven dependency plugin不适合我有两个原因 它生成存储库中文件的路径 因此要使用它们首先需要运行的其他
  • 如何在 mips 汇编中迭代字符串

    所以我现在正在做一个项目 我们必须接受一个字符串并将其转换为所有大写字母 然后如果 toUpper 或 toLower 字节不是 0 则转换为小写字母 现在我仍在处理大写字母部分 猜测小写字母几乎相同 但是当我遍历字符串查找大写字母时或者当
  • 为什么将 `this` 分配给 `self` 并运行 `self.method()`?

    我正在阅读来源mongoose https github com LearnBoost mongoose blob master lib collection js L40 Collection prototype onOpen funct
  • Neo4j 合并和原子事务

    我正在运行下面的MERGE从客户端应用程序在 10 个并行线程中查询我的 Neo4j 服务器 newFoo and id所有 10 次运行的参数均相同 MERGE foo Foo id id ON MATCH SET foo newFoo
  • 导出到文件时忽略 Jquery 数据表中标头中的 HTML

    我有一个简单的数据表 我在数据表中添加了一个带有表格标题的自定义工具提示 div 参考 https www w3schools com css tryit asp filename trycss tooltip arrow bottom 当
  • Xcode 4:我的 iPhone 项目已成为 Mac OS 项目..并且我无法更改这一点

    我有两个 iOS 项目 它们在 Xcode 3 下正确构建 并且这些 iPhone 已经在应用商店中销售了一段时间 升级到 Xcode 4 后 Xcode 现在认为这些是 Mac OS 项目 当我选择 项目设置 gt 信息 时 它实际上在顶
  • 如何从带有掩模的轮廓图像中获取像素值?

    我尝试从轮廓图像中提取平均像素值 R G B 然而 我的问题是当我应用下面的代码时 观察到一些奇怪的值 int main cv Mat star imread C Users PC Desktop star starcircle png c
  • Swift 错误“静态成员不能用于类型的实例”

    我想重载我的结构的运算符 但收到消息 静态成员 评级 不能在 GlobalSettings 类型的实例上使用 我已经阅读了这个错误的几个答案 但那里的解决方案对我根本没有帮助 我怎么解决这个问题 struct GlobalSettings
  • Android 内容提供商保护级别和不同的密钥

    我有一个应用程序提供专业版 付费 和免费版 添加支持 两个版本都使用相同的密钥存储进行签名 但每个版本都有自己的密钥别名 现在 我想开发一个与两个版本兼容的插件 通过内容提供商提供数据 数据很敏感 因此我需要只能从我的应用程序 专业版和免费
  • JSLint 的 JS 验证器替代品?

    是 JSLintit就js验证工具而言 还有其他工具吗 据我所知有两个不错的 ESLint http eslint org JSHint http jshint com
  • 多重身份验证使用一页登录laravel

    我是 Laravel 的新手 但我对多重身份验证 Laravel 很好奇 我想制作一些有两个规则的网站 客户和卖家 但是 我希望他们使用相同的登录表单登录 我尝试使用 php artisan make auth 但我不明白如何在一个控制器中
  • 在活动目录中,mailNickname 有何用途?

    在 Active Directory 中 mailNickname 是否应始终等于 samaccountname 或者 它应该始终等于邮件属性 减去 domain 我询问的原因是 我们最近将每个人的主要电子邮件地址更改为first last
  • DeviceContext (HDC) 中的 Alpha 通道

    请帮助我处理 HDC 中的 alpha 通道 我让 HDC dc 抛出 CreateCompatibleDC 然后调用 CreateDIBSection 并可以在内存中找到图像字节 然后调用 DrawFrameControl 到此 dc 一
  • Heroku:SSL 未启用

    所以我的 Rails 3 2 1 应用程序在 Heroku 上运行良好 然后我设置config force ssl true在我的生产配置文件中 打开文件后 我现在收到 SSL 未启用 错误 我以为 Heroku 允许你附带他们的 SSL
  • Powershell 字节数组到 INT

    我有一个包含两个值的字节数组 07 and DE 十六进制 我需要做的是以某种方式连接07DE并从该十六进制值获取十进制值 在这种情况下 它是2014 My code This line gives 11 bytes worth of in
  • 如何使用 Raphael.js 旋转 div?

    我是 Raphael 的新手 我真的很困惑 我想使用 Raphael 的按钮来旋转 div 及其内容 理想情况下 我希望有一个平滑的动画 当单击按钮时 动画从 0 度到 90 度 然后当再次单击按钮时 动画将反转 我想我会更改鼠标单击时的
  • 使用 jQuery 的延迟链接 ajax 请求

    我有一个网络应用程序必须多次调用服务器 到目前为止 我有一个很长的嵌套回调链 但我想使用 jQuerywhen then等功能 但是 使用后我似乎无法让东西再次运行then when get pages run tool html then
  • Objective-C 中的“超级”是什么? (自我!=超级)?

    我已阅读下面的问题和故事SEEMS simple Objective C 中的 super 到底是什么 https stackoverflow com questions 3095360 what exactly is super in o