EXC_BAD_ACCESS Ошибка - PullRequest
       38

EXC_BAD_ACCESS Ошибка

0 голосов
/ 19 августа 2011

Когда я запускаю этот код

NSString *string = [NSString stringWithFormat:@"http://makrr.com/*****/****/*****/****/%@.mp3", [data objectForKey:@"location"]];`  

Я получаю EXC_BAD_ACCESS. [data objectForKey: @ "Location"] является строкой NSCFString.

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

Я не уверен, откуда берется EXC_BAD_ACCESS, но компилятор читает [data objectForKey:@"Location"] как NSCFString, поскольку NSString является кластером классов вместе с другими типами Foundation, такими как NSNumber и NSArray:

Кластеры классов - это шаблон проектирования, который среда Foundation широко использует.Кластеры классов группируют ряд частных, конкретных подклассов в общем абстрактном суперклассе.Группирование классов таким образом упрощает общедоступную архитектуру объектно-ориентированной среды, не уменьшая ее функциональное богатство.Кластеры классов основаны на шаблоне проектирования Абстрактной Фабрики, обсужденном в «Шаблонах проектирования Какао».

Скорее всего, [data objectForKey:@"Location"] был выпущен слишком много раз и был освобожден.Это может привести к ошибке EXC_BAD_ACCESS.Вам следует тщательно проверить управление памятью, чтобы убедиться, что оно не освобождается автоматически (или не освобождается вручную).

2 голосов
/ 19 августа 2011

EXC_BAD_ACCESS означает, что вы пытаетесь получить доступ к данным, которые были освобождены из памяти. Скорее всего, вы забыли сохранить свой data объект где-нибудь по пути или объект для ключа «location» был выпущен слишком много раз. Трудно точно сказать, в чем проблема, если больше кода для контекста нет.

Вот вопрос с несколькими ответами, которые дают хорошие объяснения EXC_BAD_ACCESS.

...