2013-04-12 10 views
5

Durante la lettura della domanda THIS e la risposta accettata per la domanda, non sono riuscito a ottenere la differenza tra questi due tipi di metodi. In realtà ho capito leggendo l'esempio, ma poi, non ero in grado di scrivere il mio metodo statico.Metodo statico (che non è un metodo di classe) nell'obiettivo C

ho provato googling creare metodo statico in Objective C metodi statici

che è ritornata mi lega a THIS e THIS domanda. Ma, l'esempio qui è metodi CLASS come per il primo collegamento nella domanda. Che mi sta confondendo

Qualcuno può qui mi mostra come faccio a creare un metodo statico , che non è un metodo di classe ?

Qualsiasi luce su questo sarebbe apprezzato.

+0

Un metodo statico *** è un metodo di accesso di livello di classe. Questa differenza è "nulla". Tuttavia, puoi creare metodi statici *** c-style *** statici che non sono parte di una classe –

+0

Cosa intendi per metodo statico al di fuori della classe? Come può essere diverso con il metodo normale? – CRDave

risposta

18

Il problema riscontrato è il seguente: non ci sono metodi statici in Obj-C, ecco perché non è possibile crearli.

La differenza tra i metodi statici e di classe è una differenza tra i concetti linguistici. Puoi trovare metodi statici in linguaggi come Java o C++, troverai metodi di classe in linguaggi come Obj-C e Ruby.

La differenza principale è che

  1. I metodi statici sono condivisi tra tutte le istanze (questo non esiste in Obj-C)

  2. metodo di classe è un metodo su una classe. In linguaggi come Obj-C e Ruby una classe stessa è un'istanza di un'altra classe (metaclasse). Utilizzando + prima di una dichiarazione di metodo, il metodo verrà definito sulla classe. Tecnicamente, è solo un metodo di istanza, solo su un oggetto diverso.

Non preoccuparti se non si capisce perfettamente il concetto di metodo di classe, ci vuole tempo. Per semplificare, puoi considerarlo come un metodo condiviso tra le istanze, ma può essere sovrascritto in sottoclassi.

+0

+1 Grazie per l'informazione. Ero davvero confuso a riguardo. Ho pensato per un secondo che, se esistesse * metodo statico *, avrei dovuto trovarlo da qualche parte. Grazie ancora. – viral

+0

+1 per il riferimento rubino. Penso che aiuti a ricordare alle persone che non aiuta a comprendere Objective-C mettendolo in compagnia con Java, C++ e C#. È più facile paragonarsi a pitone, rubino e smalltalk. –

Problemi correlati