原文地址:http://www.flyblog.info/catprogramming/168.html
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开发上使用内存的小技巧, 都是我亲身试验过的,走了不少弯路。。。
分享到:
相关推荐
给大家推荐一下,上面有斯坦福大学iphone开发视频教程中英文字幕版1-6集,还有超过100本的iphone开发方面的电子书可下载(速度很快哦!)。 更新:如果大家在学习和工作中遇到什么问题,请给我留言,大家...
ios iphone开发-内存管理 所有权是iPhone内存管理的核心思想,对象的所有者负责在使用完对象后进行释放。一个对象可以有多个所有者,当它没有所有者时将被设置为取消分配(deallocation)
文档介绍了iPhone内存通过free释放的两个注意事项
详细且全面地讲述了iPhone开发中的内存管理技术
Objective-C是扩展C的面向对象编程语言,也是iPhone开发用到的主要语言。. 本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及...
iPhone开发入门经典》基于Apple最新发布的iPhoneOS3.0编写,循序渐进地介绍了从事iPhoneF发所需的基本知识,包括使用Xcode、Interface Builder、objective-C和(Cocoa Touch等开发工具,设计及美化用户界面,读写和...
文档介绍了简介,基本概念,函数,获得所有权的函数包括,释放所有权的函数包括,规则,容器,其他所有权的产生,,循环引用
iphone开发面试试卷以及答案,主要考察oc以及C语言和C++的内容,内存机制,xcode和SDk开发应用等
iPhone游戏中既播放背景音乐又播放特效声音的办法 16 NSNotificationCenter用于增加回调函数 17 UINavigationBar 背景Hack 17 清除电话号码中的其他符号(源码) 18 正则判断:字符串只包含字母和数字 18 一行代码...
本演讲将结合讲师这些年自学iPhone开发的历程,结合自己多个应用开发实践的案例,与大家分享iOS开发的技术实践,内容将涉及:开源框架的选择,如何搭建程序架构从而写更干净的代码,如何有效使用内存和防止内存泄露...
本压缩包中包含了Iphone开发中常用到的技术总结笔记,五六十中技术方法以及季节方案,包括内存管理,方法回调,获取当前地点,自定义CELL,VIew圆角等等等,太多的奶水包,是我开发中所有的精华所在,只有你不知道的...
什么是cocoa 起步 Objective—C语言 内存管理 Target/Action 辅助对象 Key—Value Coding ,Key—Value Observing NSArrayControler NsUndoManager Archiving Coredata基本原理 User Default
retain是通知编译器向分配给此属性的对象发送一个保留(retain)消息,确保属性的实例变量在被使用过程中不会被从内存中删除; nonatomic是 创建一个互斥访问,避免读和写不同步(非原子性访问); 通过这个属性声明...
相关信息 5 核心应用程序 6 核心应用程序架构 6 应用程序的生命周期 6 事件处理周期 9 基本设计模式 11 应用程序运行环境 12 启动过程快,使用时间短 12 应用程序沙箱 13 虚拟内存系统 13 自动休眠定时器 14 应用...
本书适合所有 iphone开发人员学习参考。... 目录 第一部分 iphone编程简介. 第1章 iphone简介2 1.1 iphone核心规范3 1.1.1 iphone的输入及输出规范3 1.1.2 iphone网络规范4 1.1.3 iphone浏览器规范5...
本书针对iPhone 开发新手面对的大多数常见问题逐一提供了解决方案:布置界面元素,响应用户操 作,访问本地数据源并连接到因特网。本书按示例进行组织,因此代码拿来就可以使用,非常方便。程序 员可以在自己的项目...
本书针对iPhone 开发新手面对的大多数常见问题逐一提供了解决方案:布置界面元素,响应用户操 作,访问本地数据源并连接到因特网。本书按示例进行组织,因此代码拿来就可以使用,非常方便。程序 员可以在自己的项目...
本书针对iPhone 开发新手面对的大多数常见问题逐一提供了解决方案:布置界面元素,响应用户操 作,访问本地数据源并连接到因特网。本书按示例进行组织,因此代码拿来就可以使用,非常方便。程序 员可以在自己的项目...
windows下用虚拟机搭建iphone的开发平台,即首先要安装MacOS,并且安装最新版的MacOS,以保证与最新版的Xcode兼容。 实现条件: (1)cpu支持虚拟技术。可以通过一个小软件查看cpu是否支持虚拟技术 (2)cpu的主频与内存...