Mit der Variablen der AppDelegate als eine Globale Variable - Frage bezüglich release/retain

Habe ich eine Variable namens "myDBManager" in meiner AppDelegate:

@interface myAppDelegate : NSObject <UIApplicationDelegate> {
   MyDBManager *myDBManager;
}
@property (nonatomic, retain)  MyDBManager *myDBManager;

@end

welches ich in den meisten anderen Klassen als Globale Variable halten alle meine kritischen Daten der Anwendung. Es wird nur einmal erstellt, und stirbt am Ende nur. So zum Beispiel zu bekommen, um die myDBManager in AnyOtherClass

@interface AnyOtherClass :  UITableViewController {
   MyDBManager *myDBManager;
   NSObject *otherVar;
}
@property (nonatomic,retain)   MyDBManager *myDBManager;
@property (nonatomic,retain)   NSObject *otherVar;
@end

//getting the data from "global" myDBManager and putting it into local var of AnyOtherClass
- (void)viewWillAppear:(BOOL)animated {
   //get the myDBManager global Object
   MyAppDelegate *mainDelegate = (MyAppDelegate *)[[UIApplication sharedApplication]delegate];
   myDBManager = mainDelegate.myDBManager;
   }


-  (void)dealloc {
       [otherVar release];
        //[dancesDBManager release]; DO NOT RELEASE THIS SINCE ITS USED AS A GLOBAL VARIABLE!
        [super dealloc];
        }

Hier ist meine Frage: während alle anderen lokalen Variablen AnyOtherClass, wie "otherVar" veröffentlicht, in der dealloc-Methode frei von AnyOtherClass (immer - ist das richtig?), die Freigabe myDBManager innerhalb AnyOtherClass führt zu Fehlern in der app.

So dass ich NIE lassen Sie die lokalen myDBManager variable in einer Klasse von meinem app - alle anderen lokalen Variablen werden immer veröffentlicht - und es funktioniert gut. (Auch die überprüfung der retainCount).

Bin ich im Recht, dass ALLE lokalen Variablen von Klassen, die freigegeben werden müssen in der dealloc dieser Klasse, oder ist es eigentlich OK, nicht zu release diese Variablen überhaupt in den Fällen der Verwendung einer globalen Variablen Konstrukt wie beschrieben? (oder Fälle?)

Vielen Dank für Ihre Hilfe!

InformationsquelleAutor user387184 | 2010-07-08

Schreibe einen Kommentar