×

关于alloc和init的分析

消耗积分:1 | 格式:rar | 大小:0.3 MB | 2017-09-26

分享资料个

  思考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)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !