iOS - 对象和指针

作者: SkyMing一C | 来源:发表于2018-01-05 17:58 被阅读328次
图片源于网络

我们先看一个实例变量imgv的初始化:

UIImageView * imgv=[[UIImageView alloc]init];
  • imgv是指针,指针指向的是对象。

  • [[UIImageView alloc]init]; 创建了一个对象

  • imgv = 写在前面,等于把imgv指向了那个对象。所以imgv是指针

  • 而对象藏在内存的某个角落里面,需要通过指针来访问

  • 指针指向了对象在内存中的一个地址,通过这个指针找到内存中的对象(通过指针来找到对象而不是表示对象)

  • 本质上讲:类是一种指针类型的变量,上述定义的UIImageView* 类型只是存放一个地址值,它指向实际的UIImageView对象,而真正对UIImageView对象则存放堆(heap)内存中。(所有对象都只能通过指针变量来访问它们。)

  • 堆内存中可以有多个指针,即多个指针指向同一对象。

NSMutableString *str = [@"string1" mutableCopy];
NSMutableString *str2 = str;
[str appendString:@"__str"];
[str appendString:@"__str2"];
NSLog(@"str1:%@    str2:%@",str,str2);
//输出:str1:string1__str__str2    str2:string1__str__str2
NSLog(@"str1:%X  str2:%X",str,str2);
//输出:str1:B3D96B60  str2:B3D96B60
  • 如果堆内存里的对象没有任何变量指向该对象,那么程序就无法访问该对象,就要释放内存,否则就造成内存泄漏。

参考

iOS开发对象和指针

iOS 指针和内存块

相关文章

  • iOS - 对象和指针

    我们先看一个实例变量imgv的初始化: imgv是指针,指针指向的是对象。 [[UIImageView alloc...

  • iOS中的深拷贝和浅拷贝

    深拷贝就是生成一个新的对象,内容和原对象完全相同。浅拷贝即是指针的拷贝,生成一个新的指针指向原对象 iOS中的拷贝...

  • iOS 对象和isa指针详解

    一个objc对象的isa指针指向他的类对象,类对象的isa指针指向他的元类,元类的isa指针指向根元类,所有的元类...

  • IOS

    一、IOS基础 1、浅拷贝与深拷贝浅拷贝:拷贝对象的指针成员变量和原对象的指针成员变量指向同一块内存空间。深拷贝:...

  • OC对象的本质(下)

    iOS | OC对象本质 | Objective-C OC对象的分类,对象的isa指针指向哪里,superClas...

  • Objective-c isa、superclass指针深究,元

     研究iOS isa指针本质需要要了解类的本质和结构,我们都知道iOS的对象基本都是基于NSObject的子类。我...

  • 如何实现数组的深拷贝

    概念 iOS中有深拷贝和浅拷贝的概念,其中,浅拷贝并不拷贝对象本身,只是把指向对象的指针进行拷贝,该对象的引用系数...

  • iOS面试题:objc中向一个nil对象发送消息将会发生什么?

    原文:iOS面试题大全 首先,需要搞明白2个问题: 什么是isa指针 消息传递机制 isa指针是用于对象指向类对象...

  • iOS内存分配

    iOS对象有3种: 实例对象 类对象 元类对象 对象(对象都是结构体)的内存中,包含的指针: isa 实例对象is...

  • iOS类、元类和isa、super指针的关系图和消息转发

    iOS类、元类和isa、super指针的关系图: 对象执行某方法后查找方法路径:例如:[objectA getNa...

网友评论

    本文标题:iOS - 对象和指针

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