“Fuori portata” quando l'iterazione di un NSMutableArray
-
27-09-2019 - |
Domanda
Perché mi appare un "fuori portata" errore ogni volta che provo ad accedere alla variabile "url" in questo ciclo?
for(NSString *url in self.winnerImageURLs) {
[mediaItemString appendFormat:@"{\"type\":\"image\",\"src\":\"%@\",\"href\":\"%@\"},", url, url];
}
La classe di molto voce nei "self.winnerImageURLs" NSMutableArray ritorna come NSCFString quindi non sono sicuro di quello che la dealio è qui.
Tutte le idee su quello che sto facendo di sbagliato ???
Grazie
Soluzione
Se si sta parlando di accesso alla variabile URL nel debugger, succede un bel po '. Non è un problema in sé.
Altri suggerimenti
Breve Anwer è che si suppone che sia così. Una risposta è più che NSString
è un cluster di classe.
Class gruppo
Un gruppo classe è un'architettura che raggruppa un certo numero di privati, sottoclassi concrete sotto un pubblico, superclasse astratta. Il raggruppamento di classi in questo modo fornisce una Interfaccia semplificata per l'utente, il quale vede solo il visibile pubblicamente architettura. Dietro le quinte, però, la classe astratta sta chiamando la sottoclasse privato più adatto per l'esecuzione di una determinata attività.
Molte classi comuni Cocoa
sono implementate come cluster di livello, tra cui NSArray
, NSString
e NSDictionary
.
È possibile creare e interagire con le istanze del cluster proprio come si farebbe con qualsiasi altra classe. Dietro le quinte, però, quando si crea un'istanza della classe pubblica, la classe restituisce un oggetto della sottoclasse appropriato in base al metodo di creazione che si richiama. (Non lo sai, e non è possibile, scegliere la classe effettiva dell'istanza.)
NSString esempio
NSString *a = @"UTF32.txt";
NSString *b = [NSHomeDirectory() stringByAppendingPathComponent:a];
NSTextStorage *storage = [[NSTextStorage alloc] initWithString:b];
NSString *c = [storage string];
Ognuno di a, b e c può essere (ed in 10.5 è) un'istanza di una diversa sottoclasse privata (e infatti, su Mac OS X v10.5, ciascuno è). Sebbene ciascuno degli oggetti è di una sottoclasse privata di NSString
, è conveniente prendere in considerazione ciascuno degli oggetti di essere istanze della classe NSString
.
A proposito di Class Cluster nel sito Apple Developer: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html# // apple_ref / doc / uid / TP40002974-CH4-SW34