2014-07-30 4 views
0

Я работаю над iPad-приложением.Ошибка чтения памяти iOS

Когда приложение запущено, пользователю необходимо ввести номер. С этим id я проверяю файл csv, чтобы получить информацию о пользователе.

Информация сохраняется одним синглом. Это одноточечно вызывает у меня проблемы:

шаг 1: инициализация моего одноточечного

+(ASMagasin*) sharedInstance {  
    if (myMagasin == nil){ 
     myMagasin = [[ASMagasin alloc]init]; 
    } 
    return myMagasin; 
} 

шаг 2: Звоню функцию, которая работает с CSV файл

- (id)init { 
    if (self = [super init]) { 
     NSError * error; 

     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     NSString * num_magasin = [defaults objectForKey:kUserDefautNumMagasin]; 
     [self loadMagFromCsv:filePathCsv withMagasin:num_magasin]; 
    } 
    return self; 
} 

шаг 3:

-(void)loadMagFromCsv:(NSString *)filePath withMagasin:(NSString *) num_magasin 
{ 
    NSError *error; 

    NSString *csvData = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; 
    NSArray *gcRawData = [csvData componentsSeparatedByString:@"\n"]; 

    NSArray *singleGC = [NSArray array]; 

    for (int i = 0; i < gcRawData.count; i++) 
    { 
     NSString *nextGCString = [NSString stringWithFormat:@"%@", gcRawData[i]]; 
     singleGC = [nextGCString componentsSeparatedByString:@","]; 

     if ([singleGC[0]isEqualToString:num_magasin]){ 

      _num=singleGC[0]; 
      _libelle=singleGC[1]; 
      _client_defaut_nom=singleGC[2]; 
      _client_defaut_prenom=singleGC[3]; 
      _client_defaut_tel=singleGC[4]; 
      _client_defaut_mail=singleGC[5]; 

      _cp=singleGC[6]; 
      _ville=singleGC[7]; 
      _pays=singleGC[8]; 

     } 
    } 
} 

В этой функции моя переменная error имеет это значение, прежде чем инициализировать его:

(NSError *) Ошибка = домен 0x0000000000000001: чтения памяти от 0x19 не удалось (0 из 8 байт чтения) - код чтения памяти из 0x11 не удалось (0 из байт чтения)

Я не знаю, как это решить, и откуда эта ошибка.

debug

+0

Что значит «прежде, чем вы его инициализируете»? - Значение переменной перед инициализацией в объекте C будет нулевым. – Paulw11

+0

http://image.noelshack.com/fichiers/2014/31/1406713777-capture-d-ecran-2014-07-30-a-11-43-47.png после того, как эта ошибка инициализируется нулем – user3890824

+0

. из всего, что вы не создаете синглтон должным образом. –

ответ

0

Вы смотрите на случайной памяти в куче. Это бессмысленно. Ваш NSError даже не был инициализирован на этом этапе, не говоря уже о назначении значения.

Вы можете (и должны) проверить error для значения после выполнения строки

NSString *csvData = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; 

До этого error не имеет полезное значение.

Смежные вопросы