UIScrollView setContentSize 因未捕获的 NSRangeException 崩溃

2023-12-26

删除 UIScrollView 的某些内容后,调用 setContentSize 会使应用程序崩溃。

int toolbarHeight = [[[self navigationController] toolbar] frame].size.height;
int navbarHeight = [[[self navigationController] navigationBar] frame].size.height;

int totalHeight = toolbarHeight + navbarHeight;
// contentWidth is 640
CGSize contentSize = CGSizeMake(contentWidth, [scrollView frame].size.height - totalHeight);

[scrollView setContentSize:contentSize]; // Crash happens here, contentSize is perfectly valid

* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*-[__NSArrayM objectAtIndex:]: 索引 1 超出范围 [0 .. 0]'

可能是什么原因造成的?

EDIT:对于那些能够理解它的人来说,这是堆栈跟踪:

* thread #1: tid = 0x1c03, 0x34d2e32c libsystem_kernel.dylib`__pthread_kill + 8, stop reason    = signal SIGABRT
frame #0: 0x34d2e32c libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x36c2a20e libsystem_c.dylib`pthread_kill + 54
frame #2: 0x36c2329e libsystem_c.dylib`abort + 94
frame #3: 0x308eff6a libc++abi.dylib`abort_message + 46
frame #4: 0x308ed34c libc++abi.dylib`_ZL17default_terminatev + 24
frame #5: 0x36361356 libobjc.A.dylib`_objc_terminate + 146
frame #6: 0x308ed3c4 libc++abi.dylib`_ZL19safe_handler_callerPFvvE + 76
frame #7: 0x308ed450 libc++abi.dylib`std::terminate() + 20
frame #8: 0x308ee824 libc++abi.dylib`__cxa_rethrow + 88
frame #9: 0x363612a8 libobjc.A.dylib`objc_exception_rethrow + 12
frame #10: 0x34e9050c CoreFoundation`CFRunLoopRunSpecific + 404
frame #11: 0x34e9036c CoreFoundation`CFRunLoopRunInMode + 104
frame #12: 0x3618c438 GraphicsServices`GSEventRunModal + 136
frame #13: 0x31f86e7c UIKit`UIApplicationMain + 1080
frame #14: 0x0000cb50 App`main + 152 at main.m:16

当内容偏移量超出内容大小时,似乎会引发异常。

I had views side by side in the scroll view and the offset was to the last view.

+------+------+------+
|      |      |offset|
+------+------+------+

Now the last view is removed and the content size changed to a smaller one.

+------+------+
|      |      |offset
+------+------+

The offset is left behind.

我更改了代码,以便首先移动偏移量,然后更改内容大小。

+------+------+
|      |offset|
+------+------+

到目前为止没有崩溃。

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

UIScrollView setContentSize 因未捕获的 NSRangeException 崩溃 的相关文章

随机推荐

  • Java 中的 PrintWriter 或任何其他输出流不知道“\r\n”

    我在使用 PrintWriter 或任何其他输出流在服务器和客户端程序之间发送消息时遇到问题 如果我使用 println abc 进行通信 它可以正常工作 但是如果我使用 print abc r n print abc n 或 print
  • Objective-C 中的自动释放池 - 释放主 AutoreleasePool?

    根据我的理解 当一个对象被发送时autorelease消息 如果除中的自动释放池之外不存在自动释放池main m 该对象被放置在main m 假设这是正确的 我有几个问题 1 所有自动释放的对象是否都会保留在该池中直到应用程序终止 2 如果
  • NSAttributedString 文本始终以较大的 lineHeight 粘在底部

    我正在尝试实现来自 Sketch 的按设计标签 例如我需要字体大小 19 和行高 50 的文本样式 所以我最终使用NSAttributedString with NSMutableParagraphStyle但因文本粘在底部的问题而停止UI
  • \r 和 \n 有什么区别?

    How are r and n不同的 我认为这与 Unix Windows 和 Mac 有关 但我不确定它们究竟有何不同 以及在正则表达式中搜索 匹配哪些内容 他们是不同的角色 r是回车符 并且 n是换行 在 旧 打印机上 r将打印头送回行
  • 将 anticaptcha 与 selenium 集成

    我正在使用 Selenium Python 尝试填写表格 然后填写验证码 我找到了 python anticaptcha 并购买了 10 美元的积分 一切正常 验证码出现了 但什么也没发生 我花了几个小时试图寻找答案 查阅他们的 api 和
  • Android TabLayout 在启动时选择第一个选项卡

    我正在使用 Android 设计库中的 TabLayout 我有多个选项卡 每个选项卡在被选择时都有一个操作 所以我有一个属性 startSelection 它执行 tabLayout getTabAt startSelection sel
  • 如何在处理注释时写入 Gradle 日志记录?

    我有一个javax annotation processing Processor我用来生成源文件 这一切都工作正常 但我想在构建过程中将一些调试消息写入控制台 我可以使用注释Messeger类 但这不允许我利用 Gradle 日志记录 我
  • r 闪亮滑块输入轮

    我的 R 闪亮滑块输入有问题 如您所见 圆形功能 不起作用在这幅图片中 https i stack imgur com v4nd6 png 我做错什么了吗 sliderInput Er Choose expected return in p
  • 在哪里检查 android 片段中的方向变化

    在我的应用程序中 我有一个FragmentActivity与多个Fragment除了一个特定的情况外 全部处于纵向模式Fragment 我在之间移动Fragment通过页脚View是在FragmentActivity 我有不同的布局 实际上
  • 如何测试我的 Django 电子邮件视图是否可以捕获 BadHeaderError?

    我有一个带有电子邮件表单的 Django 视图 它允许用户输入主题和消息 并将其作为电子邮件发送给站点管理员 我想编写一个单元测试来确保该视图可以捕获错误标头错误 https docs djangoproject com en 1 4 to
  • SQLiteAsyncConnection UpdateWithChildren 不可用

    我正在尝试使用 SQLite net 在我的 PCL 内实现 OneToMany 关系 我有异步扩展包 SQLiteNetExtensions Async 并且我的代码基于中找到的示例https bitbucket org twincode
  • 在 Google Analytics API 中使用和查询自定义维度

    我正在尝试查询我的 Analytics 通用 以接收按自定义维度排序的指标列表 7月 Google Analytics API 博客 http analytics blogspot com 2013 07 40 new data point
  • 循环图的数据结构和算法

    我需要定义Data Structure and Algorithm for Circular Data Graph对于网络客户端 在服务器上 数据将以 2 列 CSV 格式提供 例如发送方 接收方 最终输出将呈现在JSON格式并发送到网络请
  • 以编程方式设置约束

    我正在尝试如何使用 UIScrollView 经过一番折腾 我终于掌握了窍门 但现在我似乎遇到了另一个障碍 在这个简单的应用程序中 我有一个滚动视图 为了使其工作 我必须将视图的底部空间设置为滚动视图约束为 0 如上所述here https
  • Kotlin 有恒等函数吗?

    Scala 有一个泛型identityPredef 中的函数 def identity A x A A Kotlin 在标准库中有类似的工具吗 当然我可以简单地使用 it 相反 但我发现identity更容易阅读 并且实例化所有这些 lam
  • 根据用户角色和产品类别应用不同的税(Woocommerce)

    如果用户具有特定角色 但仅限于某些产品类别 我需要应用不同的税 示例 如果具有 Vip 角色的客户 A 购买 Bravo 或 Charlie 类别的商品 则适用的税费将为 4 而不是 22 这是我写的代码 另一部分是在谷歌上找到的 但我不明
  • 猫鼬更新 MongoDB 中的字段不起作用

    我有这个代码 var UserSchema new Schema Username type String index true Password String Email String Points type Number default
  • 重置 MySqli 指针?

    我在重置指针方面遇到了一些困难 我想这样做是因为我将在同一脚本中使用同一查询两次 据我所知 我可以在循环获取数组后重置指针来做到这一点 如果有更好的方法来做到这一点 我很想听听 无论如何 这就是我得到的 getEvent connectio
  • 设置默认样式键的方法之间的差异

    我正在创建一个自定义控件 源自Control 并想要为控件定义默认主题 以前我创建的所有自定义控件 我都使用过 static IntegerUpDown DefaultStyleKeyProperty OverrideMetadata ty
  • UIScrollView setContentSize 因未捕获的 NSRangeException 崩溃

    删除 UIScrollView 的某些内容后 调用 setContentSize 会使应用程序崩溃 int toolbarHeight self navigationController toolbar frame size height