سؤال

لا يسمح UitabbarController بتوجه المناظر الطبيعية. لذلك استخدمت فئة فرعية من uitabbarcontoller (تسمى RotatingTabbarController). غرضها الوحيد للسماح بالتناوب عن طريق العودة بنعم إلى مكالمة يجب أن يكون يجب أن يكون ذلك.

المشكلة هي أنه عند تدوير iPhone في Simulator ، فإنه يعطي خطأ Malloc التالي.

malloc: *** error for object 0x3888000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

أنا أستخدم 3.0 SDK مع Xcode 3.2 على Snow Leopard. قمت بتعيين نقطة توقف في 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) 
هل كانت مفيدة؟

المحلول

هذا خطأ في iPhone SDK 3.0. تم إصلاحه في iPhone SDK 3.1

نصائح أخرى

لا يعد التصنيف الفرعي UitabbarController وسيلة موصى بها للحصول على دوران الواجهة. في الواقع ، تقول وثائق Apple بشكل صارم عدم الفئة الفرعية إما uitabbarcontroller أو uinavigationcontroller. كما يقول أنه من أجل أن يدعم UitabbarController التلقائي ، يجب أن تدعم جميع وحدات التحكم "إدارتها" هذا التوجه (أي المشهد في هذه الحالة).

يبدو أن هذا الخطأ يبدو أنه يتم إصدار شيء ما بدون تخصيص/init ، أو أنه يتم إصداره مزدوجًا ، لا يبدو كخطأ في التصفيات الفرعية أو الرمز.

أحب نهج فئة Kevlar لحل مشكلتك ، إنه مبدع وبسيط وينبغي أن يعمل من أجلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top