思考1.对象为什么要alloc,init又是干嘛的?
很多人都知道,初始化一个对象应该这么写:
MyClass* myObj = [MyClass alloc] init];
那么有没有思考过为什么呢?其实我这么写也是完全可以的:
MyClass *myObj = [MyClass alloc];
myObj = [myObj init];
我们来看看这干了啥。
alloc allocates a chunk of memory to hold the object, and returns the pointer.
就是说alloc分配了一坨 内存给对象,让它不释放,并且把地址返回给指针。
MyClass *myObj = [MyClass alloc];
那么这样过后myobj为什么不能被使用呢?这是因为这片内存还没有被正确的初始化。
举个栗子,万达要修房子,他们第一步一定是要先向政府搞到一块地,第二步才能在这块地上动工修楼。
这里操作系统就是政府,alloc就是去争地,init就是在地上修房子。没有调用init,房子都没有修好,别人怎么买房进去住?所以我们需要用init来初始化这片内存:
-init{
self=[super init]; // 1.
if(self){ // 2.
。。.。
}
return self; // 3.
}
第一步需要初始化父类的信息,比如实例变量等等。可以理解成王思聪在修房子前要询问他老爸的意见,他老爸说想娱乐会所,他没有意见的话就会修成娱乐会所,他如果有意见,就可以悄悄的在第二步里面改为修成LOL俱乐部。第三步就不说了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !