iOS: 初始化对象的正确方法?
iOS: Proper way of initializing an object?
模仿 Parse 的 PFQuery
class,我正在构建自己的 EMQuery
class,用于我自己的项目(不是子 class查询)。我的问题是,如果我想以 Parse (PFQuery *query = [PFQuery queryWith...]
) 的方式执行对 class 方法的类似调用,这是正确的方法吗?
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [[self alloc] init];
return [query initWithQueryType:objectType];
}
- (id)initWithQueryType:(EMObjectType)objectType {
self = [super init];
if (self) {
}
return self;
}
否 - 因为您调用了 superclass 的 init 两次。
您的 initWithQueryType 应该替换对 init 的调用
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [self alloc];
return [query initWithQueryType:objectType];
}
例外情况是 class 中的 init 执行某些操作。在那种情况下,两个初始化 init
和 initWithQueryType:
应该设置为一个调用另一个,被调用的是唯一一个调用 super init
这个是指定的初始化程序
所有初始化的主要解释是关于对象初始化的部分Apple document
不要调用两个init方法;叫一个,一次。像这样:
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [[self alloc] initWithQueryType:objectType];
return query;
}
模仿 Parse 的 PFQuery
class,我正在构建自己的 EMQuery
class,用于我自己的项目(不是子 class查询)。我的问题是,如果我想以 Parse (PFQuery *query = [PFQuery queryWith...]
) 的方式执行对 class 方法的类似调用,这是正确的方法吗?
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [[self alloc] init];
return [query initWithQueryType:objectType];
}
- (id)initWithQueryType:(EMObjectType)objectType {
self = [super init];
if (self) {
}
return self;
}
否 - 因为您调用了 superclass 的 init 两次。
您的 initWithQueryType 应该替换对 init 的调用
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [self alloc];
return [query initWithQueryType:objectType];
}
例外情况是 class 中的 init 执行某些操作。在那种情况下,两个初始化 init
和 initWithQueryType:
应该设置为一个调用另一个,被调用的是唯一一个调用 super init
这个是指定的初始化程序
所有初始化的主要解释是关于对象初始化的部分Apple document
不要调用两个init方法;叫一个,一次。像这样:
+ (instancetype)queryWithType:(EMObjectType)objectType {
EMQuery *query = [[self alloc] initWithQueryType:objectType];
return query;
}