gpt4 book ai didi

iphone - *** -[__NSArrayM 版本] : message sent to deallocated instance

转载 作者:行者123 更新时间:2023-12-05 08:13:24 24 4
gpt4 key购买 nike

我正在开发一个类似于 Apple 提供的 PageControl 示例的应用程序。我的应用程序从服务器获取数据并将其存储在本地 NSMutableArray 中。然后通过加载单元格 nib 以网格格式显示该数组。

我的应用程序在模拟器上运行时在删除期间有一些延迟,但当我尝试在设备上运行它时,我的应用程序崩溃了。

此外,当我使用 Instruments 在设备上运行它时,它执行得很好。

已启用僵尸并出现以下错误。

*** -[__NSArrayM release]: message sent to deallocated instance 0x18aef0

这就是我正在做的:

  1. didFinishLaunchingWithOptions 上,我调用了两个网络服务,获取数据并将其存储在本地数组中
  2. 推送生成页面的 View Controller

试图解决同样的问题。


这是我的代码。



//**AppDelegate.h**
@interface TumBhiAppDelegate : UIResponder {
NSMutableArray *arrDetailsByCategory;
}
@property (nonatomic, retain) IBOutlet NSMutableArray *arrDetailsByCategory;
-(IBAction)doneProcessing:(id)sender;
@end

//**AppDelegate.m**
#import "AppDelegate.h"
#import "Server.h"

@implementation AppDelegate
@synthesize arrDetailsByCategory;
//Once processing is done push the view
-(IBAction)doneProcessing:(id)sender
{
BaseContentViewController *baseController = [[BaseContentViewController alloc] initWithNibName:@"BaseContentViewController" bundle:nil];
[self.navigationController pushViewController:baseController animated:YES];
[baseController release];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
arrDetailsByCategory = [[NSMutableArray alloc] init];
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[TumBhiViewController alloc] initWithNibName:@"TumBhiViewController" bundle:nil];

self.navigationController = [[UINavigationController alloc]initWithRootViewController:self.viewController];
[self.navigationController setNavigationBarHidden:YES];

self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
//getDetails is called 5-6 time
//arrDetailsByCategory is populated accordingly
[Server getDetails:@"ABC"];
[self doneProcessing:nil];
return YES;
}
@end

//**Server.h**
@interface ServerCommunication : NSObject{
}
-(BOOL)getDetails:(NSString *)str
@end

//**Server.m**
#import "Server.h"
#import "AppDelegate.h"
@implementation ServerCommunication

-(BOOL)getDetails:(NSString *)str
{
NSMutableArray *arrFinal = [NSMutableArray array];
//call web-service populate arrFinal
[[[AppDelegate GetAppDelegate] arrDetailsByCategory] addObjectsFromArray:arrFinal];
}
@end

Debugger Message

*** -[__NSArrayM release]: message sent to deallocated instance 0x7aa0870
[Switching to process 636 thread 0x15903]
[Switching to process 636 thread 0x15903]
sharedlibrary apply-load-rules all
(gdb)

堆栈消息:

0x01920db0  <+0096>  testb  $0x1,(%eax)
0x01920db3 <+0099> je 0x1920ded <___forwarding___+157>
0x01920db5 <+0101> mov %edi,0x4(%esp)
0x01920db9 <+0105> movl $0x0,0x18(%esp)
0x01920dc1 <+0113> movl $0x0,0x14(%esp)
0x01920dc9 <+0121> movl $0x0,0x10(%esp)
0x01920dd1 <+0129> movl $0x0,0xc(%esp)
0x01920dd9 <+0137> movl $0x0,0x8(%esp)
0x01920de1 <+0145> movl $0x15,(%esp)
0x01920de8 <+0152> call 0x198ec10 <__CFRecordAllocationEvent>
0x01920ded <+0157> mov -0x10(%ebp),%eax
0x01920df0 <+0160> mov %eax,(%esp)
0x01920df3 <+0163> call 0x19fcbf6 <dyld_stub_sel_getName>
0x01920df8 <+0168> mov %edi,0x10(%esp)
0x01920dfc <+0172> mov %eax,0xc(%esp)
0x01920e00 <+0176> add $0xa,%esi
0x01920e03 <+0179> mov %esi,0x8(%esp)
0x01920e07 <+0183> lea 0x12e6aa(%ebx),%eax
0x01920e0d <+0189> mov %eax,0x4(%esp)
0x01920e11 <+0193> movl $0x3,(%esp)
0x01920e18 <+0200> call 0x196bad0 <CFLog>
0x01920e1d <+0205> int3
0x01920e1e <+0206> call 0x19fc8b4 <dyld_stub_getpid> //**Dies here with Thread 5**
0x01920e23 <+0211> mov %eax,(%esp)
0x01920e26 <+0214> movl $0x9,0x4(%esp)
0x01920e2e <+0222> call 0x19fc908 <dyld_stub_kill>
0x01920e33 <+0227> xor %edi,%edi
0x01920e35 <+0229> jmp 0x192112e <___forwarding___+990>
0x01920e3a <+0234> lea 0xed29f(%ebx),%eax
0x01920e40 <+0240> mov %eax,0x4(%esp)
0x01920e44 <+0244> mov %esi,(%esp)
0x01920e47 <+0247> call 0x19fcc56 <dyld_stub_strcmp>
0x01920e4c <+0252> test %eax,%eax
0x01920e4e <+0254> mov %edi,%eax
0x01920e50 <+0256> mov %eax,%edi
0x01920e52 <+0258> mov %eax,-0x14(%ebp)
0x01920e55 <+0261> jne 0x1920e63 <___forwarding___+275>
0x01920e57 <+0263> mov 0x130e5a(%ebx),%eax
0x01920e5d <+0269> mov -0x14(%ebp),%ecx
0x01920e60 <+0272> mov (%ecx,%eax,1),%edi
0x01920e63 <+0275> mov %edi,(%esp)
0x01920e66 <+0278> call 0x19fcad6 <dyld_stub_object_getClass>
0x01920e6b <+0283> mov 0x1255ee(%ebx),%ecx

最佳答案

可能是在向其发送释放消息之前,您的数据数组可能会因任何逻辑错误而被释放

使用断点检查它在哪里被释放

关于iphone - *** -[__NSArrayM 版本] : message sent to deallocated instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com