ARC: Wie zu release statische variable?

Wird dealloc (unten) lösen Sie die NSString gezeigt, durch die statische variable exampleString?

//ExampleClass.h

@interface ExampleClass : NSObject

@end

//ExampleClass.m

static NSString *exampleString;

@implementation ExampleClass

- (void)dealloc {
    exampleString = nil;
}

- (id)init {
    self = [super init];
    if (self) {
        exampleString = [NSString stringWithFormat:@"example %@", @"format"];
    }
    return self;
}

@end
  • Dies ist ein merkwürdiges Beispiel. Erstens static als in Ihrem code verwendet, bedeutet nicht Speicherdauer aber die Sichtbarkeit (Verknüpfung) statt. Zweitens, es sieht aus wie Sie entweder wollen Klassenmethoden im Gegensatz zu Instanzmethoden, oder exampleString sollte eine Instanz-variable. Was genau wollen Sie erreichen?
  • du hast Recht. Dies ist ein merkwürdiges Beispiel. Wenn Sie zeigen Sie mir ein besseres Beispiel. Ich bin eigentlich nicht tun. Fühlen Sie sich frei, um es zu Bearbeiten.
  • Ich bin mir nicht sicher, @Matt. Wenn der code geändert wird, für Klassen-Methoden, dann gibt es keine Notwendigkeit für -dealloc. Wenn der code geändert wird, um eine Instanz-variable dann ARC kümmert sich um Sie freizulassen. Darüber hinaus static nicht wirklich Einfluss auf den code, da dessen Funktion es ist, zu begrenzen die Sicht/Verknüpfung dieser Variablen zu ExampleClass.m — memory-management wäre das gleiche, wenn static entfernt wurden.
InformationsquelleAutor ma11hew28 | 2011-10-29
Schreibe einen Kommentar