美文网首页初见
IOS中使用alloc 和init分开写会造成什么

IOS中使用alloc 和init分开写会造成什么

作者: 幽玄727 | 来源:发表于2020-04-18 11:22 被阅读0次

1.alloc和init经常放在一起写,它们分别有什么作用呢?

在初始化一个对象的时候,我们都知道要这样写

Myclass *a = [[Myclass alloc]init];

或者也可以分开写

Myclass *a = [Myclass alloc];
a = [new init];

alloc的作用如其英文含义一样,分配内存给对象,使对象不被释放,将地址返回给指针。

但是分配了内存后,这片内存还没有得到正确的初始化,就跟C中的malloc()函数分配了内存需要调用memset()函数进行初始化一样,OC中init就是为分配好的内存进行初始化。

self=[super init];
 
if(self){          
} 
  
return self; 

作用便是从父类中调用init方法为父类属性进行初始化,然后if语句内为子类新增属性初始化,完成初始化工作后返回。

注: 这是可能init返回一个不同的对象不是被创造alloc,所以最好的做法嵌套调用,如图所示。

在未将任何指针重新分配给该对象的情况下,切勿初始化该对象。例如,不要这样做:

NSObject * someObject = [NSObject alloc];
   [someObject init];

如果对的调用init返回了其他对象,则将留下指向最初分配但从未初始化的对象的指针。

苹果文档:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4

相关文章

  • IOS中使用alloc 和init分开写会造成什么

    1.alloc和init经常放在一起写,它们分别有什么作用呢? 在初始化一个对象的时候,我们都知道要这样写 或者也...

  • alloc的运行流程

    在iOS开发中我们都会使用 alloc init去创建一个对象。那么在创建对象的时候alloc 和init分别做了...

  • 单例模式的使用

    new和alloc/init的区别 从_alloc和_zoneAlloc中可以看出,alloc 使用了_zone...

  • macOS 开发 报 Failed to set (conten

    viewcontroller 初始化不同 IOS alloc init 会自动创建空view mac alloc ...

  • iOS底层探索alloc

    在我们iOS开发且使用oc语言开发中,我们创建对象的既可以使用new,也可以使用alloc和init;但是我们常用...

  • iOS底层原理:OC对象底层探索之alloc初探

    iOS开发的小伙伴们对 [XXX alloc] init] 都不陌生,可以说 alloc 和 init 贯穿我们整...

  • 2019-03-05

    iOS : alloc 与 init 初探 继承nsobject的类在alloc时分配内存 此时即可直接使用 Pe...

  • IOS alloc 底层原理探索

    前言 在iOS日常开发中,我们经常使用alloc init 方法来初始化对象,却没有去深究alloc在底层是如何执...

  • iOS 底层原理之 alloc 探究

    前言 作为一名iOS小码农,每天接触最多的就是对象的创建,alloc ,init; 但是alloc和init到底干...

  • 三、iOS中的isa

    一、isa 是什么? 通过iOS源码alloc init new 分析可以知道,对象通过alloc创建对象,分配内...

网友评论

    本文标题:IOS中使用alloc 和init分开写会造成什么

    本文链接:https://www.haomeiwen.com/subject/czfvvhtx.html