我的代码有什么问题吗?

时间:2011-04-21 03:35:45

标签: iphone

我的一个应用程序在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;

我发现有任何问题。 欢迎任何评论。

1 个答案:

答案 0 :(得分:0)

我猜你试图将该属性设置为无效指针(指向已解除分配的实例)或现有值无效。

在实现文件中创建以下函数并在其中放置一个断点,以便您可以跟踪调用setter的人:

-(void)setGPictureArray1:(NSMutableArray*)array
{
    [gPictureArray1 release];
    gPictureArray1 = array;
    [gPictureArray1 retain];
}

每次调用它时都要检查“array”和“gPictureArray1”的值,以确保它指向有效的东西。如果它被调用太多次,你也可以使用NSZombies:

http://www.cocoadev.com/index.pl?NSZombieEnabled