类方法和实例方法-什么时候/什么时候不使用它们?

| 我想知道何时以及何时不使用类方法和实例方法。我需要一些实际的例子。我真的很困惑。另一个问题:我们不能使用实例方法做与类方法完全相同的事情吗?     
已邀请:
        如果要使用实例对象或实例变量,则必须使用实例方法。 Bcz在类内部,您无法访问Instance实例objet或instance变量。 类方法是静态方法。     
        类方法:该方法未绑定到任何特定对象。在某种程度上,它的作用就像是类的命名空间中的自由函数。没有\'self \'指针。例如[UIScreen mainScreen]是一个类方法,因为只有一个屏幕,并且不需要关心多个“屏幕实例”。 实例方法:绑定到特定对象。 这适用于大多数OO语言,而不仅仅是obj-C。     
        在实现级别,实例方法调用包含指向数据结构(对象)的隐藏指针,而类方法则没有。 实际要问的问题是您的呼叫是否需要向呼叫发送一些特定的数据,这些数据是否最好封装为对象内的实例数据。 您(通常)可以使用类方法作为实例方法执行相同的操作,但是随后必须在调用中显式传递该对象作为可见参数,这看起来很丑陋,并且还可能禁用Objective C语言的某些方法重写功能。     
        将类方法用于实用程序功能,将实例方法用于面向对象的东西。 例如。对于数学计算(例如sin x),请使用类方法。但是要调用特定于对象的行为,请使用实例方法..     
        顾名思义,类方法绑定到该类。您可以仅使用特定类的名称来调用它们。这些通常是一类的公开方法。 例如  NSArray
+ (id)arrayWithArray:(NSArray *)array;
。 您可以使用类名称NSArray来调用它。您期望的只是该特定类类型的对象的创建。这不需要对象来调用。这些也是非常基本的方法,因此最好将其作为类方法。 另一方面,顾名思义,实例方法与实例紧密相关。对象是一个封装了类的状态(错误)和行为(方法)的实体。这可能对对象非常特定。 例如
- (NSUInteger)count;
让我们以NSArray * a和NSArray * b为例。如果a包含5个项目,而b包含4个项目,则在这些实例上调用的实例方法将产生不同的结果。这就是为什么我们需要在调用实例方法时初始化实例。它们在被调用对象的上下文(或状态)上工作。同样,它们不像类方法那样公开。 希望这可以帮助。     

要回复问题请先登录注册