-2
#import "ApiService.h"

@implementation ApiService
static ApiService *sharedInstance = nil;

+ (ApiService *)sharedInstance
{
    if (sharedInstance == nil)
    {
        sharedInstance =  [[self alloc]init];
    }

    return sharedInstance;
}

- (id)init
{
    if (self = [super init])
    {
    }
    return self;
}
@end

当我打电话给+sharedInstanceself 指的是什么?如何允许从 Class 方法调用 init?

4

1 回答 1

2

self是类。

+ (id)create {
  return [[self alloc] init];
}

是相同的:

+ (id)create {
  return [[SomeClass alloc] init];
}

或者在您的示例中:

+ (ApiService *)sharedInstance
{
    if (sharedInstance == nil)
    {
        sharedInstance =  [[ApiService alloc]init];
    }

    return sharedInstance;
}

这允许您self从类方法调用类方法。它允许您在继承时在子类上调用它们,因为类方法也被继承。

于 2013-01-28T16:38:05.080 回答