0

仿照 Parse 的PFQuery课程,我正在EMQuery为我自己的项目(不是 PFQuery 的子类)构建自己的课程。我的问题是,如果我想以 Parse 的方式对类方法执行类似的调用(PFQuery *query = [PFQuery queryWith...]),这是正确的方法吗?

+ (instancetype)queryWithType:(EMObjectType)objectType {
    EMQuery *query = [[self alloc] init];
    return [query initWithQueryType:objectType];
}

- (id)initWithQueryType:(EMObjectType)objectType {

    self = [super init];
    if (self) {

    }

    return self;
}
4

2 回答 2

3

不 - 因为您两次调用超类的 init 。

您的 initWithQueryType 应该替换对 init 的调用

+ (instancetype)queryWithType:(EMObjectType)objectType {
    EMQuery *query = [self alloc];
    return [query initWithQueryType:objectType];
}

例外情况是,如果你的类中的 init 做了一些事情。在这种情况下,应该设置两个 initinit并设置一个调用另一个,并且调用的一个是唯一调用这个的一个是指定的初始化程序initWithQueryType:super init

所有初始化的主要解释是对象初始化Apple文档的部分

于 2015-02-11T21:10:56.467 回答
0

不要调用两个 init 方法;叫一个,一次。像这样:

+ (instancetype)queryWithType:(EMObjectType)objectType {
    EMQuery *query = [[self alloc] initWithQueryType:objectType];
    return query;
}
于 2015-02-11T21:16:48.933 回答