一、常用用UIImage加载图像的方法有:
1、用imageNamed函数(适用于图片频繁使用场景)
[UIImage imageNamed:ImageName];
用imageNamed的方式加载时,系统会把图像Cache到内存。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存,而且释放图像的 内存是一件相对来说比较麻烦的事情。例如:如果利用imageNamed的方式加载图像到一个动态数组NSMutableArray,然后将将数组赋予一 个UIView的对象的animationImages进行逐帧动画,那么这将会很有可能造成内存泄露。并且释放图像所占据的内存也不会那么简单。但是利 用imageNamed加载图像也有自己的优势。对于同一个图像系统只会把它Cache到内存一次,这对于图像的重复利用是非常有优势的。例如:你需要在 一个TableView里重复加载同样一个图标,那么用imageNamed加载图像,系统会把那个图标Cache到内存,在Table里每次利用那个图 像的时候,只会把图片指针指向同一块内存。这种情况使用imageNamed加载图像就会变得非常有效。
2、用NSData的方式加载,例如:(适用于图片大,且使用地方少)
1. NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
2. NSData *image = [NSData dataWithContentsOfFile:filePath];
3. [UIImage imageWithData:image];
利用NSData方式加载时,图像会被系统以数据方式加载到程序。当你不需要重用该图像,或者你需要将图像以数据方式存储到数据库,又或者你要通过网络下载一个很大的图像时,请尽量使用imageWithData的方式加载图像。
注意:无论用哪种方式加载图像,图像使用结束后,一定要记得显示释放内存。
二、NSBundle的理解
NSBundle就是定位文件路径的类,返回的是文件所在路径的绝对地址。
三、DEBUG与RELEASE分别是调试版本和发布版本。
有时在调试版本可以通过,但是发布版本却出现问题,需要更深一步的检查问题。在代码中会出现#ifdef DEBUG #endif
四、Encode和Decode
1、Encode是编码,关于URL 编码是为了符合url的规范。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。例如在baidu中搜索"测试汉字"。 URL会变成:
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477
所谓URL编码就是: 把所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
2、Decode是解码,一般是服务端的工作,与编码过程相反。