erreur « hors de portée » lorsque itérer un NSMutableArray
-
27-09-2019 - |
Question
Pourquoi suis-je recevoir une variable « hors de portée » erreur chaque fois que je tente d'accéder à la « url » dans cette boucle?
for(NSString *url in self.winnerImageURLs) {
[mediaItemString appendFormat:@"{\"type\":\"image\",\"src\":\"%@\",\"href\":\"%@\"},", url, url];
}
La classe de l'élément dans la très « self.winnerImageURLs » NSMutableArray revient comme NSCFString donc je ne suis pas sûr de ce que l'dealio est ici.
Toutes les idées sur ce que je fais mal ???
Merci
La solution
Si vous parlez l'accès à la variable URL dans le débogueur, il arrive assez souvent. Ce n'est pas un problème en soi.
Autres conseils
Court anwer est qu'il est censé être comme ça. Une réponse est plus que NSString
est un cluster de classe.
groupe classe
Un cluster de classe est une architecture qui regroupe un certain nombre de privé, les sous-classes concrètes dans le cadre d'un public, abstrait superclasse. Le regroupement des les classes de cette manière fournit une interface simplifiée pour l'utilisateur, qui ne voit que le public visible architecture. Dans les coulisses, cependant, la classe abstraite appelle la sous-classe privée la plus adaptée pour effectuer une tâche particulière.
De nombreuses classes de Cocoa
communes sont mises en œuvre en tant que groupes de classe, y compris NSArray
, NSString
et NSDictionary
.
Vous créez et d'interagir avec les instances du cluster comme vous le feriez pour tout autre classe. Dans les coulisses, cependant, lorsque vous créez une instance de la classe publique, la classe retourne un objet de la sous-classe appropriée en fonction de la méthode de création que vous invoquez. (Vous ne le faites pas, et ne peut pas, choisir la classe réelle de l'instance.)
Exemple NSString
NSString *a = @"UTF32.txt";
NSString *b = [NSHomeDirectory() stringByAppendingPathComponent:a];
NSTextStorage *storage = [[NSTextStorage alloc] initWithString:b];
NSString *c = [storage string];
Chacun a, b et c est peut-être (et 10,5 est) une instance d'une sous-classe privée différente (et en fait, sous Mac OS X v10.5, chacun est). Bien que chacun des objets est d'une sous-classe privée de NSString
, il est commode de considérer chacun des objets à des instances de la classe NSString
.
A propos de Les clusters de classe dans Apple Developer site: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html# // apple_ref / doc / uid / TP40002974-CH4-SW34