开发者

Singleton EXC_BAD_ACCESS

so I have a class that I declare as a singleton and in that class I have a NSMutableArray th开发者_如何学JAVAat contains some NSDictionaries with some key/value pairs in them. The trouble is it doesn't work and I don't know why... I mean it crashes with EXC_BAD_ACCESS but i don't know where. I followed the code and it did create a new array on first add, made it to the end of the function ..and crashed ...

    @interface dataBase : NSObject {
    NSMutableArray *inregistrari;

}

@property (nonatomic,retain) NSMutableArray *inregistrari;



-(void)adaugaInregistrareCuData:(NSDate *)data siValoare:(NSNumber *)suma caVenit:(BOOL)venit cuDetaliu:(NSString *)detaliu;
-(NSDictionary *)raportIntreData:(NSDate *)dataInitiala siData:(NSDate *)dataFinala;
-(NSArray *)luniDisponibileIntreData:(NSDate *)dataInitiala siData:(NSDate *)dataFinala;
-(NSArray *)aniDisponibiliIntreData:(NSDate *)dataInitiala siData:(NSDate *)dataFinala;
-(NSArray *)vectorDateIntreData:(NSDate *)dataI siData:(NSDate *)dataF;
-(void)salveazaInFisier;
-(void)incarcaDinFisier;
+ (dataBase *)shareddataBase;


@end

And here is the .m file

#import "dataBase.h"
#import "SynthesizeSingleton.h"


@implementation dataBase
@synthesize inregistrari;


SYNTHESIZE_SINGLETON_FOR_CLASS(dataBase);


-(void)adaugaInregistrareCuData:(NSDate *)data siValoare:(NSNumber *)suma caVenit:(BOOL)venit cuDetaliu:(NSString *)detaliu{
    NSNumber *v=[NSNumber numberWithBool:venit];
    NSArray *input=[NSArray arrayWithObjects:data,suma,v,detaliu,nil];
    NSArray *keys=[NSArray arrayWithObjects:@"data",@"suma",@"venit",@"detaliu",nil];

    NSDictionary *inreg=[NSDictionary dictionaryWithObjects:input forKeys:keys];

    if(inregistrari == nil) {
        inregistrari=[[NSMutableArray alloc ] initWithObjects:inreg,nil];
    }else {
        [inregistrari addObject:inreg];
    }


    [inreg release];
    [input release];
    [keys release];

}

It made it to the end of that adaugaInregistrareCuData ... ok . said the array had one object ... and then crashed


Try adding "NSZombieEnabled" with value "YES" to your arguments on your executeable:

Right click your executeable, select get info and add that entry to the variables in the bottom list.

This will tell you what datatype has crashed.

Using build & analyze it tells me that you are releasing inreg, input and keys twice.

All three variables will be autoreleased, your manual release will cause the later autorelease to fail and give you your BAD_ACCESS.

Don't manually release them, remove these three lines from your code:

[inreg release];
[input release];
[keys release];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜