2010-05-22 5 views
1

그래서 싱글 톤으로 선언하는 클래스가 있고 그 클래스에는 몇 가지 키/값 쌍을 포함하는 NSDictionaries가 들어있는 NSMutableArray가 있습니다. 문제는 그것이 작동하지 않는 이유는 모르겠지만 ... 나는 그것이 EXC_BAD_ACCESS와 충돌하지만, 어디에 있는지 모른다. 여기 싱글 톤 EXC_BAD_ACCESS

@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 

그리고

가하는 .m 파일

#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]; 

} 
입니다 ... 추락 기능 .. 그리고의 마지막에 그것을 만들었다, 나는 코드를 다음과 먼저 추가에 새로운 배열을 생성했다

그것은 그 adaugaInregistrareCuData ...의 끝에 그것을 만들었다. .. ok.

오른쪽, 당신의하는 실행 파일을 클릭하여 선택 정보를 얻을하고 해당 항목을 추가 : 배열은 하나 개의 객체를했다 ... 다음하는 실행 파일에 인자에 "YES"값 "NSZombieEnabled"을 추가

답변

3

시도 추락했다 하단의 목록에있는 변수.

이것은 충돌 한 데이터 유형을 알려줍니다.

빌드 & 분석을 사용하면 inreg, 입력 및 키을 두 번 릴리스한다고 알려줍니다.

세 변수가 모두 자동 릴리즈됩니다. 수동 릴리스로 인해 자동 릴리스가 실패하고 BAD_ACCESS가 발생합니다.

수동으로 해제하지 마십시오, 여러분의 코드에서 이러한 세 줄 제거 :

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

현재 언어 : 자동; 해제 된 인스턴스 0x3b62c70 (GDB)로 전송 메시지가 이 무슨 같다 : CFArray 해제] - [207 2,954] *** : 18 : 59.829 Licenta 현재 목표 -C 은 (GDB)를 2010-05-22 22 계속 NSZOmbieEnabled를 사용하면 ... CFArray입니다. wtf는 CFArray입니까? – user426132

+0

권장대로 릴리스를 시도했지만 여전히 같은 오류가 발생했습니다. – user426132

+0

__forwarding__ --forwarding -0- nspopautoreleasepool uiapplicationhandleevent purpleeventcallback cfrunlooprunspecific cfrunloopruninmode gseventrunmodal gseventrun uiaplicationmain 메인 네 .. 오토 릴리즈 풀 – user426132