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 [复制链接] [打 印]
赞助商链接