Ich habe versucht, eine statische Variable zu erstellen, um ein Wörterbuch von Bildern zu speichern. Unglücklicherweise war der beste Weg, um es zu initialisieren, das Einchecken jeder Funktion, die die Variable verwendet hat. Da ich diese Variable innerhalb einer Kategorie erstelle, kann ich sie nicht einfach im Initialisierer initialisieren. Gibt es eine nettere Art der NavigationBarImages zu initialisieren?
%Vor%Betrachten Sie diesen Ansatz,
%Vor%Wenn Sie navigationBarImages verwenden möchten, ersetzen Sie es wie folgt mit navigationBarImages () :
ändern
%Vor%bis
%Vor%Wenn der Overhead des Funktionsaufrufs Sie stört, verwenden Sie möglicherweise eine temporäre Variable, um die Rückgabe von navigationBarImages (),
zu erfassen %Vor%Der Nachteil ist, dass Sie, sobald Sie navigationBarImages () aufgerufen haben, die Instanz von NSMutableDictionary erstellt wurde, dann wird es niemals die Chance bekommen, bis zum Ende des Programms die Zuordnung aufzuheben.
Eine Option ist die Verwendung von C ++. Ändern Sie die Dateiendung in .mm und ersetzen Sie = NULL
durch [[NSMutableDictionary alloc] init]
.
Sie könnten +initialize
in der .m-Datei deiner Kategorie - du musst nur sicherstellen, dass du keine existierende Implementierung zerschmetterst, sonst bekommst du eine allgemeine Wonkiness. (Natürlich können Sie sich dessen sicher sein, wenn Sie den Code geschrieben haben, aber mit Code von Drittanbietern ist dies wahrscheinlich nicht der beste Ansatz.)
Tags und Links objective-c initialization category static-variables