我的一个应用程序在thread0上工作并崩溃,第35步,内存地址0x00002c60
35 MyAppName 0x00002c60 0x1000 + 7264
所以我调用命令atos来定位崩溃点,如下所示:
atos -arch armv6 -o MyAppName.app/MyAppName 0x00002c60
它返回
-[AppDelegate setGPictureArray1:] (in MyAppName) (AppDelegate.m:9)
我在行
之前显示所有代码//AppDelegate.h
#import <UIKit/UIKit.h>
#import "RootViewController.h"
@class RootViewController;
@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
IBOutlet RootViewController *rootViewController;
NSMutableArray * gPictureArray1;
NSMutableArray * gPictureArray2;
}
@property (nonatomic, retain) NSMutableArray * gPictureArray1;
@property (nonatomic, retain) NSMutableArray * gPictureArray2;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) RootViewController *rootViewController;
@end
//AppDelegate.m
#import "AppDelegate.h"
#import "RootViewController.h"
@implementation AppDelegate
@synthesize window;
@synthesize rootViewController;
@synthesize gPictureArray1;//**it looks like the crash happens here**
@synthesize gPictureArray2;
我发现有任何问题。 欢迎任何评论。
答案 0 :(得分:0)
我猜你试图将该属性设置为无效指针(指向已解除分配的实例)或现有值无效。
在实现文件中创建以下函数并在其中放置一个断点,以便您可以跟踪调用setter的人:
-(void)setGPictureArray1:(NSMutableArray*)array
{
[gPictureArray1 release];
gPictureArray1 = array;
[gPictureArray1 retain];
}
每次调用它时都要检查“array”和“gPictureArray1”的值,以确保它指向有效的东西。如果它被调用太多次,你也可以使用NSZombies: