Frage

Wenn ich eine Tab-Leiste app habe, und plant mit Core-Lage in verschiedenen Tabs, gibt es einen guten gemeinsamen Ort, um den Code zu alloc / init die CLLocationManager verwendet zu setzen, und erhält das Updates einmal startUpdatingLocation genannt wird? Oder wenn es wird in zwei verschiedenen Registern verwendet werden, kann ich dann legst du es einfach in den Code für jede Registerkarte? Nur frage mich, was am besten Praktiken sind, seit ich in die Programmierung neu bin. Danke.

War es hilfreich?

Lösung

Wenn Sie das Sie duplizieren feststellen, was du geschrieben hast, oder konfrontiert mit Code zu schreiben, die, sollten die Schaffung einer Schnittstelle (Objekt, Set-Funktionen, usw.), um diese Aufgaben zu bewältigen gibt.

siehe DRY (Sie wiederholen sich nicht). es wird durch die Zeit, eine Menge doppelter Funktionalität, Sie ein paar apps geschrieben haben. es ist am besten, es einmal zu schreiben, und das richtig schreiben zu können.

Hier sind einige hohe Richtlinien:

  • nicht app-spezifische Funktionen in einer gemeinsamen Schnittstelle setzen (statt, eine Unterklasse durch die zwei Projekte zur gemeinsamen Nutzung)

  • immer halten Sie Ihre Basen von Hacks frei (es sei denn, Sie mit einem Problem in den Systembibliotheken zu tun hat). wenn Kunden (zum Beispiel Subklassen, Anrufer) benötigen eine bestimmte Problemumgehung oder erfordern eine gezielte Kontrolle, dann ist es besser, sie zu machen es handhaben.

  • Verwendung Behauptungen sie die Schnittstelle wie vorgesehen, um sicherzustellen, überprüfen jedes Argument, Voraussetzung / Nachbedingung, den Zustand des Objekts, etc ..

  • halten Sie Ihre Objekte / Schnittstellen sehr klein und wartbar, mit einem klaren Zweck ihrer beabsichtigten Verwendung. natürlich, wird dies in einer höheren Anzahl von Objekten zur Folge hat.

  • vermeiden den Drang zu verwenden Singletons und statische Daten; es gibt fast immer einen besseren Weg, auch wenn es so einfach ist, wie Kunden zwingen, eine Instanz der Klasse zu erstellen.

  • erstellen Bibliotheken mit diesen Schnittstellen und teilen sie logisch.

jetzt, das ist bedeckt ...

würde ich unter Verwendung von (möglicherweise mehrere) Instanzen der Objekte beginnen Sie benötigen. nichts in der Dokumentation gibt es, dass die Staaten „Sie sollten nicht mehr Instanzen des Objekts erstellen“.

, wenn dies irgendwie unzureichend in Profilieren, und betrachtet ein gemeinsam genutztes Objekt verwendet, die Relais-Nachrichten an die Objekte (in der App), die Notwendigkeit Updates.

Begründung:. Chancen sind, Apple bereits die Implementierung optimiert, so dass Sie nicht haben

Schließlich brach ich diese Richtlinien in einer App, die eine Tonne Standortanfragen erforderlich, und zeigte eine Tonne Standortinformationen. die App verwendet, um einige statischen Daten hinter einer Schnittstelle, die den Standort-Manager und den Ort gespeichert (unter anderem). so endete i statische Daten mit einem privaten (versteckt) statischen Daten mit bis zu den Speicher- und CPU-Anforderungen in diesem Fall zu reduzieren.

Andere Tipps

Ich bin nicht mit John einverstanden ist, ist die AppDelegate der „easy“ Weg, es zu tun, aber nicht immer besser ist das.

ich tun würde, dies mit einem Singleton. Sie können an Matt Gallagher Artikel schauen auf Singletons, AppDelegates und Top-Level Daten Referenz.

Die App Delegieren ist ein guter, zentraler Ort für solche Daten. Sie können jederzeit auf die AppDelegate mit [[UIApplication sharedApplication] delegate] bekommen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top