Frage

Sorry, wenn das klingt wie ein bisschen eine noobie Frage, sie ist noch relativ neu in ObjC und iOS aber nicht neu in der Software-Entwicklung, aber das Lesen von Dokumenten / Ansehen von Videos zu verschiedenen Themen, höre ich einige Sätze, dass ich ‚m nicht sicher, könnte jemand einen Moment Zeit nehmen eine sehr kurze Beschreibung der folgenden Begriffe zu geben -. oder, daß ich für sie einen guten Anhaltspunkt

Ich werde Liste unter den Bedingungen i mit stecken bin und was ich glaube, ich habe gedacht, es ist / Mittel und jede Hilfe mir bei der Korrektur, damit ich besser dem Fluss von Apples Dokumentation folgen würde schwer geschätzt werden.

1) Singleton

Möglicherweise ähnlich eine völlig statische Klasse in PHP, hat keine Instanzmethoden

2) Model, View Controller (MVC) Organisation - speziell die 'Modell' Komponente

Ich weiß, die weit gefasste Definition ist Dinge seperate halten, was ich dies entspricht denken zu Ihrer Ansicht wäre, was Sie auf den Bildschirm ausgegeben entweder programmatisch oder in Interface Builder bauen würde die Steuerung der Code sein, dass Griffe Nachrichten (Klicks , Armaturen usw.) aus der Sicht und drückt Informationen in der Ansicht, obwohl in vielen Fällen die .xib und .h / .m Paar, das Formularansicht und Controller-Teil der gleichen Familie sind (dh MyViewController.h / .m / .xib ). Das Modell in meiner Vermutung ist, wo separate Handler für das Lesen und Daten zu / von einer Quelle zu schreiben, zum Beispiel eine Klasse, die Sie Nachrichten an die senden können laden und Rückgabedaten aus einer SQLite-Datenbank oder aus einem XML-Feed und verarbeiten sie.

3) Wo ist der richtige Ort für die *, wenn man über Objekttypen?

Ich kenne das * bedeutet einen Zeiger aber ich habe Dinge wie die unten geschrieben gesehen, die aussehen wie sie das Gleiche bedeuten:

NSString *myVar;
NSString* myVar;
NSString * myVar;

Ich verstehe das * geht nach der Art in einem Nachrichten-Header zB:

- (void)myMessageHandler:(NSString *)str;

4) Wenn NSInteger zu verwenden, im Vergleich zu nur schlicht int?

Dies ist derjenige, der mich an einen Idioten machen könnte, aber ich habe es zu fragen, wie ich bin nicht sicher, wenn zu verwenden, die, und ich sehe viele verschiedene Beispiele, wo es gemischt ist.

5) Wiederverwendbare Einheits-Identifikationen

Wenn de-Schlange stehen / Erstellen von Objekten, dass die Arbeit über die Weiterverwendung Warteschlange, ich sehe die gleiche identische Kennung jedes Mal verwendet (zB für eine UITableViewCell, @ „cellIdentifier“). Doch was ich sehe, ist, dass die Zelle zurückgesetzt mit den entsprechenden Zeilendaten jedes Mal ist, anstatt einfach in der Warteschlange gespeichert, diese Verwirrung von Tabellen in HTML kommt, wo jede Zeile zu adressieren, entweder Sie den DOM durchqueren oder einen ID-Tag in der jede Zeile, die einzigartig ist.

Ich denke, dies ist eine Speicherverwaltung, was wodurch man nicht wirklich bemerken würde, was los ist, wenn Sie die Standardklasse verwenden, aber wenn Sie verschiedene benutzerdefinierte Klassen verwendet haben, gehe ich davon aus der Idee ist, dass Sie instanziiert eine von jeder Art nur pro Elternklasse-Instanz (zB UITableView), so dass, obwohl Sie die Eigenschaften jedes Mal zurückgesetzt, benötigt der gesamte Speicher ist minimal und die Instanziierung Zeit der Schleife herausgenommen, wie Sie es nur einmal tun?

Ein Teil 2 auf diese Frage wäre, wenn ich eine App haben, die aufeinander geschoben mehrere View-Controller hat, wäre es ratsam, eine eindeutige Kennung zu verwenden, die so zu einer bestimmten Ansicht betrifft, wenn ich benutzerdefinierte Unterklassen wurde mit der Identifikatoren würde eine Überlappung nicht verursachen und wahrscheinlich ein Speicherleck.

zB schiebt UITableView eine Karte, die einen UITableView drückt, wenn eine Anmerkung ausgewählt ist, wenn ich in beiden UITableView des „cellIdenfier“, wie mein wiederverwendbaren Identitätsnamen verwendet, aber die zweite verwendet eine benutzerdefinierte Klasse für UITableViewCell, wenn ich zurück die Ansicht von oben, würde das System nicht potenziell zurückgeben mir die falsche Art während der de-Warteschlange und verursacht etwas seltsamen Ausgang?

War es hilfreich?

Lösung

Wie middaparka sagte, sollten Sie vielleicht die Fragen gespalten, aber ich kann 1-3 beantworten.

Ein Singleton ist ein Design-Muster bedeutet es nur eine Instanz einer Klasse im gesamten Programm. Es wird in der Regel mit einem statischen getInstance Verfahren, dass entweder kehrt die vorhandene Instanz (gespeichert als eine statische Variable) oder erstellt eine neue implementiert, wenn es nicht existiert. Jede gute Referenz auf Entwurfsmuster sollte es richten.

Für MVC, Ihre Idee eines Modells ist im wesentlichen richtig. Das Modell ist, wo die Daten gespeichert sind. Wieder Blick auf ein Entwurfsmuster Referenz für weitere Details.

Was, wo die * geht, die weitgehend eine Frage des Stils, wie der Compiler ist wird jede Methode akzeptieren. Ich persönlich bevorzuge es auf den Typ neben setzen, wie es technisch Teil von der Art ist, aber die meisten Orte, die ich gearbeitet habe legte es neben der Kennung. Ich glaube, der Grund es neben dem Identifikator für die Umsetzung, dass eine der anderen Verwendungen für * ist ein Zeiger dereferenzieren, in diesem Fall ist es sinnvoll zu gruppieren sie mit der Variablen macht, und sie wollen es visuell konsistent machen. Ich habe nur die Räume um einen * gesehen, wenn sie als Multiplikationsoperator verwendet wird.

Andere Tipps

Auch wenn Sie eine Antwort akzeptiert haben, da sie nicht abgeschlossen ist, werde ich etwas hinzufügen.

Karl Singleton Definition ist auf dem Geld, soweit ich betroffen bin.

Das Modell ist nicht nur die Objekte, die Daten zu speichern, es ist die Business-Logik als auch.

Was, wo die * geht, ja, es ist eine Frage des Stils, aber es ist auf subtile Weise falsch zu sagen, es ist Teil der in C ist (von denen Objective-C ist ein Ober). Dies ist leicht mit dem folgenden demonstriert:

int* foo, bar;

Es ist nicht deklariert zwei Variablen vom Typ int* aber einen Zeiger auf einen int (foo) und einen int (bar). So technisch sollten Sie die * mit dem Variablennamen setzen. Allerdings verwende ich die gleiche Konvention wie Karl und das obige Problem vermeiden, indem er nie Deklarieren von Variablen in Komma getrennten Listen.

  

Wenn NSInteger zu verwenden, im Vergleich zu nur schlicht int?

Sie sollten es immer verwenden jederzeit die Cocoa-API-Dokumente sagen, Sie sollten. Es gibt sonst absolut keinen Vorteil bei der Verwendung als zu einem normalen int gegenüber. Wenn Sie eine bestimmte Breite für einen int zu gewährleisten benötigen geben, sollten Sie die C99-Standard diejenigen von stdint.h (int32_t, int64_t usw.) verwenden. Wenn Sie nicht über eine bestimmte Breite gewährleisten müssen Sie möglicherweise auch die Typen gebaut verwenden, es sei denn, ein Cocoa-API gibt Ihnen ein NS (U) Integer. Gießen eines NS (U) Integer zu einem (unsigned) int, läuft Gefahr, Kürzen es auf einigen Architekturen (x86_64 zum Beispiel).

  

Wiederverwendbare Einheits-Identifikationen

Ein UITableView braucht eine Instanz für jede Zelle, die zur Zeit auf dem Bildschirm sichtbar ist. eine Zelle Instanziierungsanwendung könnte teuer sein (man könnte auf die Festplatte zu gehen brauchen eine NIB, zum Beispiel zu laden), so dass anstelle der Zellen wegzuwerfen, wenn sie Blick gehen, wird die Tabelle um sie in der Warteschlange der weggeworfenen Zellen setzen. Es ist viel schneller, um dann aus dieser Warteschlange eine nicht verwendete Zelle zu ziehen, wenn Sie ein neues benötigen, als es zu instanziieren ein von Grund auf neu ist.

Die Wiederverwendung Bezeichner ist erforderlich, da Ihre Tabellenansicht Zellen verschiedenen Typen in ihm haben kann. z.B. eine Zeile könnte ein Textfeld hat und eine andere Zeile möglicherweise eine Datumsauswahl hat. Also, wenn die Tabellenansicht eine Zelle für die Textzeile anfordert, wäre es nicht gut, ihm eine Zelle mit einem Datumsauswahl geben.

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