UITabBarControllerは、横向きの向きを許可しません。だから、私はUITabBarContoller(RotatingTabBarControllerと呼ばれる)のサブクラスを使用しました。その唯一の目的は、shouldAutorotateToInterfaceOrientation呼び出しにYESを返すことでローテーションを許可することです。UITabBarControllerの横向きですか?
シミュレータで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)
サブクラスの代わりにUITabBarControllerのカテゴリを使用して回転させることができました。これは私たちのために機能します。私はあなたのエラーについて何をすべきか分かりません。私はこの状況でそれにぶつからないので恐れています:( – Kevlar
カテゴリの実装方法を説明してもらえますか? – Vic
私はこのようなケブラーのアプローチを試みましたが、同じmalloc関数ポインタ解放エラーを取得:( // UITabBarController + Rotation.h @interface UITabBarController(回転) - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation; @end // UITabBarController + Rotation.m #import "UITabBarController + Rotation.h" @implementation UITabBarController(rotation) - (BOOL)shouldAutorotateToInterf aceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } @end – Vic