以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;
}
答案 0 :(得分:3)
不 - 因为你两次调用超类的init。
您的initWithQueryType应该替换对init
的调用+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [self alloc];
return [query initWithQueryType:objectType];
}
例外情况是你班级中的init做了什么。在这种情况下,应设置两个inits init
和initWithQueryType:
,其中一个调用另一个,而被调用的一个是唯一调用super init
的那个。这个是指定的初始值
所有初始化的主要解释是关于对象初始化Apple document
的部分答案 1 :(得分:0)
不要调用两个init方法;打电话给一次。像这样:
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [[self alloc] initWithQueryType:objectType];
return query;
}