【发布时间】:2012-08-24 08:10:05
【问题描述】:
在 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]'
这可能是什么原因造成的?
编辑:这里是堆栈跟踪,供那些可以理解它的人使用:
* 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
【问题讨论】:
-
请解释您的反对意见!谢谢。
-
我认为您的问题的解决方案在您的问题之内...检查崩溃时的调用堆栈以及谁试图访问该数组以及为什么它试图访问索引不可用的对象。
-
@Tutankhamen 我不了解你,但对我来说,调用堆栈什么也没说
-
您应该向我们展示您设置内容大小的代码..
-
有问题的数组在 UIScrollView 内部(我认为是),所以我想我无法控制它。
标签: objective-c ios uiscrollview crash nsrangeexception