解决IOS编程中内存分配与释放问题

移动开发 iOS
解决IOS编程中内存分配与释放问题是本文要介绍的内容,主要是来学习IOS应用中内存是如何来分配和释放的问题,不多说,来看本文详解。

解决IOS编程中内存分配与释放问题是本文要介绍的内容,主要是来学习IOS应用中内存是如何来分配和释放的问题,不多说,来看本文详解。

ios编程中是离不开内存操作的,刚接触ios编程时总是因为这样那样的内存问题而导致程序crash掉。其实ios编程中内存的释放还是比较简单的,只需要release或autorelease你自己retain、new、alloc、copy和mutableCopy的对象即可。一个原则就是:你分配了存,你就负责释放。

另外要注意的就是很多方法会自动retain被添加的对象,比如:

  1. NSString *test = [[NSString alloc] initWithFormat: @"%d", 111];  
  2. NSLog(@"%d", [test retainCount]);//此时test的retain为1  
  3. NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:test, nil];  
  4. NSLog(@"%d", [test retainCount]);//此时test的retain为2,因为array中添加了test对象,所以test会被retain  
  5. [array addObject:test];  
  6. NSLog(@"%d", [test retainCount]);//此时test的retain为3,因为array中又添加了test对象,所以test会被retain  
  7. [array release];  
  8. NSLog(@"%d", [test retainCount]);//此时test的retain为1,array被释放,它会自动释放自己内部的对象,所以test的retain count又变回1 

所以在调用类似addObject:test这样的方法后,如果你不在使用test对象了,请一定释放它,而不用担心“如果我释放了test,那么array中的test是不是会没有了啊?”这样的问题,如果你不释放它反而会导致内存的泄漏。

retainCount类似java中的引用计数,当retainCount为0时,就会调用该对象的dealloc方法从而释放该对象。

小结:解决IOS编程内存分配与释放问题的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2010-10-08 15:58:22

IE JS

2023-10-18 13:31:00

Linux内存

2009-06-03 15:52:34

堆内存栈内存Java内存分配

2011-08-04 18:17:44

Oracle数据库共享内存

2022-08-05 11:55:13

FlutteriOS

2011-09-06 13:15:04

MTK文件系统内存

2011-08-05 16:41:48

iOS 队列 内存

2021-02-28 13:22:54

Java内存代码

2011-08-22 11:07:16

IOS 开发多核内存

2011-07-15 01:10:13

C++内存分配

2009-06-10 22:03:40

JavaScript内IE内存泄漏

2013-10-12 13:01:51

Linux运维内存管理

2018-05-08 08:46:47

Linux内存释放

2010-07-29 14:08:05

Flex内存泄露

2023-12-27 13:55:00

C++内存分配机制new

2022-10-30 13:21:58

谷歌Chrome浏览器

2011-07-22 15:42:39

Objective-C UIView 内存

2011-12-20 10:43:21

Java

2022-07-28 08:00:00

Buddy算法内存系统

2009-07-01 18:05:54

JSP中文乱码
点赞
收藏

51CTO技术栈公众号