如何解决Objective-C对象创建方法的差异
| 这两种方法之间的主要区别是什么:+ (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;
}
解决方法
第一个方法是一个类方法,它创建一个调用者不拥有并且不能释放的对象。第二个(除了原始问题中的错字)是一个初始化程序,并且由于调用方必须结合
+alloc
对其进行调用,因此它返回调用方拥有并必须释放的对象。
有关完整的解释,包括有关哪些方法名称暗含所有权的描述,请参阅Apple的《内存管理编程指南》。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。