2011-08-18 4 views
-1

Quand je lance ce codeEXC_BAD_ACCESS Erreur

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

Im obtenir un EXC_BAD_ACCESS. [data objectForKey: @ "Location"] est un NSCFString.

+1

Rien ne va de travers avec ceci, vous devrez montrer plus de code. – jtbandes

Répondre

2

Je ne sais pas où le EXC_BAD_ACCESS vient, mais le compilateur est en train de lire [data objectForKey:@"Location"] comme NSCFString depuis NSString est un cluster de classe, ainsi que d'autres types de la Fondation tels que NSNumber et NSArray:

classe Les clusters sont un modèle de conception que le framework Foundation utilise largement. Les classes regroupent un certain nombre de sous-classes concrètes, sous une superclasse publique et abstraite. Le regroupement de classes de cette façon simplifie l'architecture publiquement visible de un cadre orienté objet sans réduire sa richesse fonctionnelle. clusters de classe sont basés sur le modèle de conception abstraite usine décrit dans « Design Patterns Cocoa. »

Très probablement, [data objectForKey:@"Location"] a été libéré trop de fois et a été désallouée. Cela pourrait entraîner une erreur EXC_BAD_ACCESS. Vous devriez vérifier attentivement la gestion de votre mémoire pour voir qu'elle n'est pas libérée automatiquement (ou libérée manuellement).

2

EXC_BAD_ACCESS signifie que vous essayez d'accéder aux données qui ont été libérées de la mémoire. Très probablement, vous avez oublié de conserver votre objet data quelque part, ou l'objet de la clé "location" a été libéré trop de fois. Il est difficile de dire exactement quel est le problème sans plus de code pour le contexte.

Here's a question avec quelques réponses qui fournissent de bonnes explications de EXC_BAD_ACCESS.