这两种方法之间的主要区别是什么:
+ (id)videoGameWithTitle:(NSString *)newTitle publisher:(NSString *)newPublisher year:(int)newYear {
VideoGame *game = [[[VideoGame alloc] init] autorelease];
game.title = newTitle;
game.publisher = newPublisher;
game.year = newYear;
return game;
}
- (id)initVideoGameWithTitle:(NSString *)newTitle publisher:(NSString *)newPublisher year:(int)newYear {
self = [super init];
if(self) {
self.title = newTitle;
self.publisher = newPublisher;
self.year = newYear;
}
return self;
}
答案 0 :(得分:1)
第一种方法是一种类方法,它创建一个调用者不拥有且不得释放的对象。第二个(除了原始问题中的拼写错误)是一个初始化程序,由于调用者必须与+alloc
一起调用它,它返回一个调用者拥有并必须释放的对象。
要获得完整的解释,包括说明哪些方法名称意味着所有权,哪些方法名称没有,请查看Apple的Memory Management Programming Guide。