Objective-C: Soll ich private Methoden deklarieren?

8

Ich habe private Methoden in Klassenerweiterungen deklariert, laut Beste Methode zum Definieren privater Methoden für eine Klasse in Objective-C .

Aber ich habe gerade festgestellt, dass in Xcode 4, wenn ich die Deklaration einer privaten Methode ganz weglasse und sie einfach implementiere, die App kompiliert und ohne Warnung oder Fehler läuft.

Also, sollte ich mich überhaupt damit befassen, private Methoden in Klassenerweiterungen zu deklarieren?

Warum sollten wir Methoden überhaupt deklarieren müssen? In Java, Sie nicht ... weder in Ruby.

    
ma11hew28 20.07.2011, 19:05
quelle

3 Antworten

10

Eine Methodendefinition muss nur definiert werden, wenn der Aufrufer vor der Methode deklariert wird. Aus Konsistenzgründen würde ich empfehlen, Ihre privaten Methoden in der Erweiterung zu definieren.

%Vor%     
Joe 20.07.2011, 19:11
quelle
5

Diese Antwort wurde bereits von Joe für Xcode vor Version 4.3 korrekt beantwortet. In Version 4.3 und höher müssen jedoch nicht nur private Methoden deklariert werden, sondern auch die Deklarationsreihenfolge. Weitere Informationen finden Sie unter

Private Methoden in Objective-C, in Xcode 4.3 Ich muss sie nicht mehr in meiner Implementierungsdatei deklarieren?

    
ravron 28.06.2012 00:41
quelle
2

Dies wird kompiliert und läuft gut ohne Deklaration:

%Vor%

Aber zuletzt habe ich überprüft, das wird eine Warnung geben:

%Vor%

Mit anderen Worten, es ist genau wie in C: Eine Deklaration ist nicht notwendig, wenn die Definition vor einer Verwendung steht. C erfordert dies, um zu vermeiden, dass dem Compiler ein zusätzlicher Durchlauf hinzugefügt werden muss (einer, um die Funktionen zu finden und dann einen, um sie tatsächlich zu analysieren). Ob du sie deklarieren solltest, wenn es nicht nötig ist, es liegt wirklich am Stil der Codebasis, mit der du arbeitest.

Wie bei anderen Sprachen, für die keine Deklarationen erforderlich sind, gehen manche einfach mit dem Extra-Durchlauf vor, während andere die Anzahl und Typen der Argumente oder den Rückgabetyp zum Zeitpunkt der Kompilierung nicht kennen müssen (sie suchen nach Funktionen) zur Laufzeit statt, oder sie haben nicht stark typisierte Variablen zu Beginn, so dass es nicht "wichtig"), so dass sie es einfach überspringen können.

    
Anomie 20.07.2011 19:18
quelle