2012-04-02 9 views
0

Könnte eine dumme Frage sein, aber in unserer iOS-App speichern wir eine Ganzzahl für eine UI-Farbeinstellung. In drawRect einer benutzerdefinierten Ansicht erhalten wir diesen Präferenzwert und verwenden ihn, um einen bestimmten UIColor für einen gezeichneten Text festzulegen.Wie effizient ist es, eine Ganzzahl von standardUserDefaults direkt zu bekommen?

Ich verstehe, dass standardUserDefaults Werte zwischengespeichert werden, aber ist dies eine ineffiziente Art, Dinge zu tun? Sollten wir stattdessen einen lokalen ivar zur benutzerdefinierten Ansicht hinzufügen und den Präferenzwert auf init ziehen und sich dann für eine Benachrichtigung registrieren, wenn die Standardwerte geändert werden, sodass der Wert aktualisiert werden kann?

Antwort

1

Wie hier angemerkt: Accessing NSUserDefaults Often, es sei denn, Sie optimieren eine innere Schleife, die eine Million Mal pro Sekunde aufgerufen wird, müssen Sie sich überhaupt nicht darum kümmern.

Auch ist es wahrscheinlich eine schlechte Idee, sich solche Fragen zu stellen, das heißt vorzeitige Optimierung und wir alle wissen, dass es die Wurzel allen Übels ist. Wenn Sie echte Antworten wissen möchten, stellen Sie den gesamten Code in den richtigen Kontext (Sie müssen also die gesamte Anwendung beenden) und verwenden Sie den Profiler. In den meisten Fällen werden Sie sehen, dass der Engpass dort ist, wo Sie es nicht erwarten würden.

0

Verwenden Sie den Zeitprofiler und sehen Sie, wo Zeit in Ihrer Zeichenmethode verbraucht wird. Ich bezweifle, dass das Abrufen des Werts von Standardwerten ein Leistungsengpass ist, verglichen mit einer Zeichnung, die Sie tatsächlich mit der Farbe selbst vornehmen.

Machen Sie Ihren Code nicht komplizierter, als es ohne triftigen Grund sein muss.