xrD*_*DDD 1 constructor objective-c
假设我有一个名为Item的类.这是NewsItem和TwitterItem的超类.
如果我想创建一些NewsItem,我必须使用(内部构造函数)
self = [super init];
Run Code Online (Sandbox Code Playgroud)
如果是,为什么?在Java/C#中我会这样做,
NewsItem n = new NewsItem();
Run Code Online (Sandbox Code Playgroud)
我不必对Java/C#中的超类做任何事情.只是无法把握它.
在Java和C#中,如果您没有显式调用它,编译器会自动使您的构造函数调用超类构造函数.例如,"Java Tutorials"这样说:
如果构造函数未显式调用超类构造函数,则Java编译器会自动插入对超类的无参数构造函数的调用.如果超类没有无参数构造函数,则会出现编译时错误.对象确实有这样的构造函数,因此如果Object是唯一的超类,则没有问题.
在Objective-C中,编译器不会自动执行,因此您必须自己执行此操作.
因为你的超类(和你的超类的超类)也需要一个初始化的机会.
并且,请记住,您的超类将[很少]返回nil或不同的实例.
这就是你这样做的原因:
- (id)init
{
self = [super init];
if (self) {
... init stuff ....
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1176 次 |
最近记录: |