„Out of scope“ Fehler beim Iterieren eines NSMutableArray
-
27-09-2019 - |
Frage
Warum erhalte ich eine „out of scope“ Fehler, wenn ich versuche, die „url“ Variable in dieser Schleife zugreifen?
for(NSString *url in self.winnerImageURLs) {
[mediaItemString appendFormat:@"{\"type\":\"image\",\"src\":\"%@\",\"href\":\"%@\"},", url, url];
}
Die Klasse von sehr Artikel in den „self.winnerImageURLs“ NSMutableArray kommt zurück als NSCFString so bin ich nicht sicher, was die dealio hier ist.
Alle Ideen, was ich falsch mache ???
Danke
Lösung
Wenn Sie sprechen über die URL-Variable in der Debugger Zugriff geschieht es eine ganze Menge. Es ist kein Problem an sich.
Andere Tipps
Short anwer ist, dass es soll so sein. Eine längere Antwort ist, dass NSString
ist ein Klasse-Cluster.
Klasse Cluster
Ein Klasse-Cluster ist eine Architektur dass Gruppen eine Reihe von privaten, konkrete Subklassen im Rahmen eines öffentlichen, abstrakte Superklasse. Die Gruppierung von Klassen auf diese Weise eine bietet vereinfachte Schnittstelle zum Benutzer, der nur sieht die öffentlich sichtbar die Architektur. Hinter den Kulissen, aber die abstrakte Klasse ruft up der Privatunterklasse am besten geeignet für eine bestimmte Aufgabe.
Viele gängige Cocoa
Klassen werden als Klassen Cluster implementiert, einschließlich NSArray
, NSString
und NSDictionary
.
Sie erstellen und die Interaktion mit Instanzen des Clusters nur wie jede andere Klasse. Hinter den Kulissen aber, wenn Sie eine Instanz der öffentlichen Klasse zu erstellen, gibt die Klasse ein Objekt der entsprechenden Unterklasse auf der Erstellungsmethode aus, dass Sie aufrufen. (Sie dies nicht tun, und nicht, wählen Sie die aktuelle Klasse der Instanz.)
NSString Beispiel
NSString *a = @"UTF32.txt";
NSString *b = [NSHomeDirectory() stringByAppendingPathComponent:a];
NSTextStorage *storage = [[NSTextStorage alloc] initWithString:b];
NSString *c = [storage string];
Jeder von a, b und c (und in 10,5 ist) eine Instanz einer anderen Privatunterklasse (und in der Tat, auf Mac OS X v10.5, jeweils). Obwohl jedes der Objekte einer privaten Unterklasse von NSString
ist, ist es praktisch jedes der Objekte zu betrachten Instanzen der NSString
Klasse sein.
über Klasse Cluster in Apple Developer-Website: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html# // apple_ref / doc / uid / TP40002974-CH4-SW34