2010-12-12 11 views
1

In Objective-C, während wir eine Klasse erstellen, wie entscheiden wir, ob wir eine Methode als Klassenmethode oder Instanzmethode markieren müssen?Objective-C: Klassen- gegen Instanzmethoden?

Ich kenne den Unterschied zwischen den 2, aber meine Frage ist, wie die Markierung (+/-) für jede Methode zu entscheiden?

Antwort

7

+ bezeichnet eine Klassenmethode, - bezeichnet eine Instanzmethode. Sie erstellen Klassen- oder Instanzmethoden, für die Ihre Anwendung sie benötigt. Wenn Sie tatsächlich den Unterschied zwischen den beiden und Ihrer Anwendung kennen, dann sollten Sie keine Probleme haben, zu verstehen, wann Sie welche verwenden sollen.

Ich glaube, Sie wissen nicht, die Unterschiede, wie sie für Ihre Anwendung zutreffen, also hier ein kleiner Primer:

  • Sie verwenden eine Klassenmethode, wenn Sie ein bestimmtes Verhalten zugreifen müssen global über alle Instanzen diese Klasse. d.h. [[self class] someSpecialThing];
  • Sie verwenden auch eine Klassenmethode, wenn Sie eine Factory-Methode benötigen. und
  • Überall sonst verwenden Sie eine Instanzmethode.
+0

Gute Antwort, obwohl ich glaube, es ist ein wenig irreführend zu sagen, dass Messaging 'Selbst's Klasse ist in der Regel für Factory-Methoden vorbehalten. Meiner Meinung nach sollten Sie immer dann eine Klassenmethode verwenden, wenn Sie über Funktionen verfügen, die an einen bestimmten Typ gebunden sind und sich dennoch nicht für eine bestimmte Instanz interessieren. –

+0

Sorry, schlechte Formulierung meinerseits, ich wollte nicht implizieren, das war eine gute Form, das waren zwei getrennte Gedanken. Ich werde den Wortlaut fixieren. – jer

Verwandte Themen