首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

iOS - 对象和指针

2024-12-20 来源:化拓教育网
图片源于网络

我们先看一个实例变量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
  • 如果堆内存里的对象没有任何变量指向该对象,那么程序就无法访问该对象,就要释放内存,否则就造成内存泄漏。

参考

显示全文