2012-06-24 7 views
15

He comprobado todas estas preguntas ...Propósito de Métodos de instancia vs. Métodos de clase en Objective-C

... y todo lo que explican es cómo se usan los métodos de instancia en instancias de una clase y los métodos de clase se usan con la clase, cuando se envía un mensaje a una clase. Esto es útil, pero tengo curiosidad por saber por qué se usaría un método de clase vs. un método de instancia.

+0

posible duplicado de [Objective-C: Clase vs Métodos de instancia?] (Http://stackoverflow.com/questions/1053592/objective-c-class-vs-instance-methods) –

Respuesta

45

En general, debe crear métodos de instancia cuando necesite código que opere en una instancia específica de un objeto. Usted crea un método de clase cuando necesita hacer algo que involucre esa clase en general, pero probablemente no opere en ningún objeto específico de esa clase.

En la práctica, encontrará que casi todos sus métodos deben ser métodos de instancia. Simplemente eche un vistazo a cualquier clase Objective-C existente como NSString, NSArray, UIView, etc. y verá que la gran mayoría de sus métodos son métodos de instancia. El uso más común de los métodos de clase (una vez más, mira las clases que mencioné) son para los constructores de conveniencia que devuelven los objetos autorelease o los accesos simples.

Considere el método length en NSString. ¿Por qué es este un método de instancia y no un método de clase? Es un método de instancia porque solo tiene sentido preguntar a una instancia específica de NSString cuál es su longitud. Pedir NSString en general para una longitud (es decir, si la longitud era un método de clase) no tendría ningún sentido.

Por otro lado, supongamos que queremos agregar un método al NSNumber que devolverá el valor entero máximo que se puede almacenar en un sistema dado. En este caso, debe ser un método de clase porque solo estamos haciendo una pregunta general de NSNumber que es independiente de cualquier instancia específica.

+0

Se confunde entre los parámetros del método y el objeto que se usa para llamar al método (también conocido como el receptor). Sugiero que mires algunos tutoriales minuciosos de Objective-C en línea o en un libro. – UIAdam

+0

Buena explicación. Pero me pregunto si todavía importa ahora desde que cuando escribo esta publicación, ARC ya está en la foto. – sooon

+0

Muy buena explicación ... gracias :) – Nav

Cuestiones relacionadas