WEB开发网
开发学院手机开发iPhone 开发 iPhone开发内存管理 阅读

iPhone开发内存管理

 2010-10-21 01:38:50 来源:WEB开发网   
核心提示:但是我还没在xcode以及文档中找到相关的用法,也懒得去查了,iPhone开发内存管理(3), 关于garbage collection的内容也没啥可说的, 想说说这几天遇到的无GC情况下的几个内存相关问题, 千万别发送release消息给autorelease对象, 否则只能over了3. 注意delegate,Ob
但是我还没在xcode以及文档中找到相关的用法,也懒得去查了。 关于garbage collection的内容也没啥可说的, 想说说这几天遇到的无GC情况下的几个内存相关问题。

Objective-C 的autorelease确实给开发省了不少事情提高了开发效率, 这对于Mac OSX桌面开发没问题,因为内存大不存在内存紧张的局面。但是如果要为iPhone开发程序, 还是慎用 autorelease的好, 否则只好等程序退出时再清理内存了。 在iphone上最好不要保存不必要的对象, 使用的时候在创建,比如图片、文件等等。 还有一点要注意的就是UITableView, 如果你是把UITableView放在UITableViewCOntroller中,那么别担心,没有什么问题,如果你是在 UIViewController或者其子类里放置UITableView,那么注意了, 在Pop掉 viewcontroller的时候一定记得先把UItableView的delegate设置为空, 也就是 [tableView setDelegate:nil] ,之所以这样做, 是因为tableView的delegate是个retain,会保存对象, 所以如果你不在pop之前将delegate设为nil, 将不会调用view controller的dealloc,内存也就无法释放, 这么来几下恐怕就要内存吃紧了。

总结了几条内存使用经验

1. 对象现用现创建

2. 所有用alloc,new , retain等创建的对象都需要调用release去释放, 千万别发送release消息给autorelease对象, 否则只能over了

3. 注意delegate,如果时retain类型,最好在释放之前将之设为nil

4. 在频繁使用alloc的地方(循环) 创建自己的NSAutoReleasePool

5. 对于UIImage对象慎用 [UIImage imageNamed:], 使用[UIImage imageWithContentOfFile:] 或者[image initWithContentOfFile:]

上一页  1 2 3 

Tags:iPhone 开发 内存

编辑录入:coldstar [复制链接] [打 印]
赞助商链接