0

我知道类方法和对象方法之间的区别,但我不清楚为什么我们在 iOS 中使用类方法?谁能给我举个例子,这样我就可以理解了..??

4

5 回答 5

1

类方法是类句柄的方法,实例方法是单个实例上的方法。

类方法的一个常见用例是像NSString's这样的便利分配器+stringWithFormat:。它与使用相同(添加了自动释放,如果您不使用 ARC),[[NSString alloc] initWithFormat:] 但可以节省大量时间。

另一个例子是MFMailComposeViewController'+canSendMail方法。不需要先创建一个实例来看看是否支持发送邮件。该类对此更了解,因此该方法是类方法而不是实例方法。

类似的问题

于 2012-07-31T12:49:19.353 回答
1

我经常使用类方法来创建一个程序,该程序使用一种称为“单例”的设计模式。例如,如果我有一个处理来自其他类的请求的类,我只需要请求处理类的 1 个实例,并且我希望我的整个程序都使用同一个。在请求处理类中,我放置了一个静态变量来保存实例化。

static MyRequestHandler *requestHandler;

并且用一个类的方法来获取,如果还不存在的话,我先制作然后保存。

+ (MyRequestHandler *) getRequestHandler {
     if (requestHandler == nil) {
         requestHandler = [[MyRequestHandler alloc]init];
     }
     return requestHandler;
}

其他类可以在这样的代码中达到这个实例化

MyRequestHandler *requestHandler = [MyRequestHandler getRequestHandler];
于 2012-07-31T13:00:57.850 回答
1

Stackoverflow 是你的朋友。

类方法和实例方法有什么区别?

类方法通常是方便的方法,例如 NSString 的 +stringWithFormat: 即你不需要实例化一个类来使用它们。

于 2012-07-31T12:51:29.320 回答
1

类方法和对象方法。

@interface TheClassA : NSObject
+ (TypeA)classMethod;
- (TypeB)objectMethod;
@end

@implementation TheClassA

+ (TypeA)classMethod
{
}

- (TypeB)objectMethod
{
}

@end



main()
{
   [TheClassA classMethod]; // Correct!!!
   [TheClassA objectMethod]; // Wrong!!!

   TheClassA *obj = [[TheClassA alloc] init];
   [obj classMethod]; // Wrong;
   [obj objectMethod]; // Correct;
   [obj.class classMethod]; // Correct
   [obj.class objectMethod]; // Wrong
}

类方法具有类似于通用 C 语言函数的范围。这是全局方法。但是……对象方法只给对象有效……类方法不能改变它的类属性,不能向对象发送消息。但是对象方法可以向对象发送消息并可以更改属性。

祝你好运。

于 2012-07-31T12:52:59.033 回答
0

类方法用于库例程。要访问这些方法,不必创建它的对象。

例如,有时它为您提供了简单的初始化程序来创建对象。

NSArray *arr = [NSArray array];
于 2012-07-31T12:48:05.147 回答