NSOperation-简介
SDWebImage375源码-SDWebImageDecoder
由于UIImage的imageWithData函数是每次画图的时候才将Data解压成ARGB的图像,
所以在每次画图的时候,会有一个解压操作,这样效率很低,但是只有瞬时的内存需求。
为了提高效率通过SDWebImageDecoder将包装在Data下的资源解压,然后画在另外一张图片上,这样这张新图片就不再需要重复解压了。
这种做法是典型的空间换时间的做法。
首先NSURLCache是缓存原始数据(raw data)到磁盘或内存,因此每次使用的时候需要将原始数据转换成具体的对象,如UIImage等,这会导致额外的数据解析以及内存占用等,而SDWebImage则是缓存UIImage对象在内存,缓存在NSCache中,同时直接保存压缩过的图片到磁盘中;还有一个问题是当你第一次在UIImageView中使用image对象的时候,图片的解码是在主线程中运行的!而SDWebImage会强制将解码操作放到子线程中。
以上记录下来备忘 还不是很理解怎么回事
SDWebImage375源码-叁
在SDWebImage3.7.5源码阅读二中看完后,已经知道SDWebImageCombinedOperation类的在cacheOperation搜索完缓存之后:
1 | operation.cacheOperation = [self.imageCache queryDiskCacheForKey:key done:^(UIImage *image, SDImageCacheType cacheType) { |
SDWebImage375源码-简介
SDWebImage 3.7.5简介
github地址: https://github.com/rs/SDWebImage
功能
- 异步图片下载
- 异步图片缓存
- GIF支持
- WebP图片格式支持
- 后台图片解析
- 相同URL不会被多次下载
- 无效URL不会多次尝试链接
SDWebImage375源码-贰
3. downloadImageWithURL下载方法的具体实现
方法在SDWebImageManager.m中
1 | id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url |
参数:
- url
- options
- 之前已经介绍了 SDWebImageOptions
progressBlock
- SDWebImageDownloaderProgressBlock 定义在 SDWebImageDownloader.h 中具体实现为:
1
2
3//从名字可以看出来第一个参数是已经接受了数据的大小
//另一个参数表示总数据的大小
typedef void(^SDWebImageDownloaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize);
- SDWebImageDownloaderProgressBlock 定义在 SDWebImageDownloader.h 中具体实现为:
completedBlock
- 图片下载完要做的块 具体实现为:
1
2
typedef void(^SDWebImageCompletionWithFinishedBlock)(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL);
- 图片下载完要做的块 具体实现为:
然后一看这个方法实现……麻蛋 好长!
AVFoundation-AVAudioPlayer简介
使用System Sound Service播放音效
步骤
- 调用
AudioServicesCreateSystemSoundID( CFURLRef inFileURL, SystemSoundID* outSystemSoundID)
函数获得系统声音ID。 - 如果需要监听播放完成操作,则使用
AudioServicesAddSystemSoundCompletion( SystemSoundID inSystemSoundID, CFRunLoopRef inRunLoop, CFStringRef inRunLoopMode, AudioServicesSystemSoundCompletionProc inCompletionRoutine, void* inClientData)
方法注册回调函数。 - 调用
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
或者AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
方法播放音效(后者带有震动效果)。
AVFoundation-avspeechsynthesizer文字转语音
SDWebImage375源码-壹
0. 图片的异步下载
比如在tableview中:
1 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ |