iOS - 对象和指针

图片源于网络

我们先看一个实例变量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 指针和内存块

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,406评论 30 472
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 6,457评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,128评论 0 12
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,757评论 0 6
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,146评论 0 35

友情链接更多精彩内容