我以Parse的PFQuery类为模型,为自己的项目(不是PFQuery的子类)构建自己的EMQuery类。我的问题是,如果我想以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;
}

最佳答案

否-您两次调用超类的初始化。

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

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


例外是如果您的班级中的init做某事。在这种情况下,应将两个初始化initinitWithQueryType:设置为一个调用另一个,而被调用的是唯一调用super init的一个。这是指定的初始化程序

所有初始化的主要解释是关于对象初始化Apple document的部分

关于ios - iOS:初始化对象的正确方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28464463/

10-10 21:03