iPhone开发中内存的相关问题
Objective-C2.0 号称可以支持Garbage Collection了, 也就是垃圾回收, 但是我还没在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:]
上面几条是在iPhone开发上使用内存的小技巧, 都是我亲身试验过的,走了不少弯路。。。
转载自:FLYBLOG [http://www.flyblog.info]
本文链接地址:http://www.flyblog.info/catprogramming/168.html
相关文章
[...] 原文地址:http://www.flyblog.info/catprogramming/168.html [...]
学习了。尤其是[tableView setDelegate:nil]
开发iPhone内存,感觉好高端啊。
rapid cash managment payday loan…
Very usefull. Thanks! rapid cash managment payday loan…
advance cash fast get in loans online payday…
Very usefull. Thanks! advance cash fast get in loans online payday…
[...] 原文链接:http://www.flyblog.info/catprogramming/168.html [...]
感谢分享,我也走了不少弯路