UITabBarController 不允许横向。所以我使用了 UITabBarContoller 的一个子类(称为 RotatingTabBarController)。它的唯一目的是通过向 shouldAutorotateToInterfaceOrientation 调用返回 YES 来允许旋转。
问题是,当您在模拟器中旋转 iPhone 时,会出现以下 malloc 错误。
malloc: *** error for object 0x3888000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
我在 Snow Leopard 上使用 3.0 SDK 和 Xcode 3.2。我在 malloc_error_break 中设置了一个断点,但我无法将其追溯到我的代码。有什么办法可以让这个错误消失吗?
这是 RotatingTabBarController 类:
#import <UIKit/UIKit.h>
@interface RotatingTabBarController : UITabBarController {
}
@end
@implementation RotatingTabBarController
-(BOOL)shouldAutorotateToInterfaceOrientation:UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end
更新:
我对一个类别进行了同样的尝试。但它给出了相同的 malloc 错误。
// UITabBarController+Rotation.h
@interface UITabBarController (rotation)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
@end
// UITabBarController+Rotation.m
#import "UITabBarController+Rotation.h"
@implementation UITabBarController (rotation)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end
回溯
[Session started at 2009-09-05 12:13:19 -0400.]
Untitled(992,0xa06d9500) malloc: *** error for object 0x2024000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Untitled(992,0xa06d9500) malloc: *** error for object 0x2014000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
[Session started at 2009-09-05 12:13:27 -0400.]
GNU gdb 6.3.50-20050815 (Apple version gdb-1344) (Fri Jul 3 01:19:56 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 992.
sharedlibrary apply-load-rules all
(gdb) bt
#0 0x951908fa in mach_msg_trap ()
#1 0x95191067 in mach_msg ()
#2 0x30244d62 in CFRunLoopRunSpecific ()
#3 0x30244628 in CFRunLoopRunInMode ()
#4 0x32044c31 in GSEventRunModal ()
#5 0x32044cf6 in GSEventRun ()
#6 0x309021ee in UIApplicationMain ()
#7 0x00002608 in main (argc=1, argv=0xbfffef94) at /Users/vishwas/Desktop/Untitled/main.m:13
(gdb)