2013-07-09 11 views
6

Ich bin auf der Suche nach Wissen heute..h und .m-Dateien in Objective-c

Ich arbeite an einigen Code für die Arbeit, und nach Prüfung hatte ich eine komplette Gehirn Fart und kann mich nicht erinnern, warum wir etwas mit dem .h und .m-Dateien in Objective-C tun

  1. Ich habe mich gefragt, warum wir Dateien importieren und Methodennamen in den .h-Dateien deklarieren? (Ich weiß, es hat mit der Verarbeitung zu tun, aber kann mich nicht an die Details erinnern)
  2. Warum importieren wir manchmal Dateien direkt in die .m-Datei und nicht in den .h-Dateien in einigen Fällen.
  3. Wenn Sie eine Methode in der .h-Datei deklariert haben tun Sie dies, weil die Klasse und/oder Bibliotheken, die Sie verwenden, keine Funktion ausführen, die Sie auch benötigen?
  4. Gibt es jemals einen Fall, in dem Sie eine Methode deklariert haben, die in keiner Ihrer Bibliotheken oder Ihrer .h-Datei in Ihrer .m-Datei vorhanden ist?

Danke an alle, ich hoffe, dass alles einen Sinn ergab.

+0

Ich fürchte, nichts davon hat wirklich Sinn gemacht. :( –

+4

Ähm ... es ergab Sinn. Beantworten Sie einfach jetzt. – Fogmeister

Antwort

15
  1. Es wird verwendet, um zwischen den öffentlichen und privaten Teilen einer Klasse zu trennen. Die .m-Datei ist die implementation. Es ist, wo die ganze Logik geht, alle Daten werden verarbeitet und gespeichert, etc ... Die .h-Datei ist die interface dieser Klasse. Es ist buchstäblich wie eine API für Ihre eigene Klasse. Es teilt anderen Klassen mit, wie man es benutzt und wie man damit arbeitet.

  2. Sie importieren eine Klasse, wenn Sie sie in einer Datei referenzieren. Wenn Sie etwas (d. H. Eine Eigenschaft) in der Schnittstelle referenzieren, importieren Sie es in die .h. Wenn Sie es nur in der Implementierung referenzieren, importieren Sie es in die .m.

  3. Alle in der .h deklarierten Methoden sind vorhanden, so dass andere Klassen wissen, dass sie es ausführen können. d.h. sie sind öffentliche Methoden. Versuchen Sie, eine Deklaration zu entfernen und dann diese Methode aufzurufen. Du wirst eine Warnung erhalten.

  4. Nein, das würde keinen Sinn ergeben. Es sei denn, du hast dein Programm geschrieben und es zu Testzwecken deklariert.

+0

für Ihre Antwort auf Frage 2. Ich glaube, ich verstehe den ersten Teil. Können Sie vielleicht anhand eines Beispiels den zweiten Teil zum Referenzieren einer Implementierung erklären? – Jadex1

+0

Wenn ich sagte "referenzieren Sie es in der Implementierung" Ich meinte nur, es in der Klasse .m zu verwenden. z.B. Wenn Sie eine benutzerdefinierte Klasse mit dem Namen 'MyCustomClass' erstellen und diese dann in einem View-Controller verwenden, entscheiden Sie sich dafür. Dann müssen Sie es in die .m-Datei importieren. – Fogmeister

3
  1. Da die .h Datei der Klasse public interface
  2. ist, weil die Einfuhren in die .m-Datei setzen macht sie private und hält die Abhängigkeiten aus der H-Datei (verhindert eine übermäßige Abhängigkeit Import und potenzielle Zirkularitäten)
  3. Sie tun es öffentlich zu erklären, dass Sie diesen Service zur Verfügung stellen
  4. Sie sollten nicht, wenn es nicht existiert, können Sie es nicht verwenden (obwohl Sie Dinge erklären können, von denen Sie hoffen, dass sie existieren und vorher prüfen Sie versuchen tatsächlich, sie zu verwenden)

Bonus extra für 2. In Ihrer .h-Datei sollten Sie sich bemühen, eine Mindestanzahl von Importen zu haben (nur die Superklasse und alle Protokolle, die Sie öffentlich implementieren) und @class für alles andere verwenden. Dies minimiert die Auswirkungen auf die Abhängigkeit.

+0

Vielen Dank für Ihre Erklärung, die mir geholfen hat. So halten Methoden in der .h-Datei hilft, sie privat zu halten. – Jadex1

+0

@ Jadex1 wenn ich richtig bin es ist die .M-Datei, die privat ist, wie Fogmeister sagt: "Die .m-Datei ist die Implementierung. Es ist, wo die ganze Logik geht, alle Daten werden verarbeitet und gespeichert, usw.". – 0x1ad2

Verwandte Themen