sdwebimage

Xcode : module name “” is not a valid identifier while running XC unit test

自作多情 提交于 2020-07-19 04:13:06
问题 Trying to run XCTest with my CocoaPods set up using SDWebImage , and I can only see this error as below. Any suggestions? :0: error: module name "" is not a valid identifier Command /Applications/Xcode8.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1 But as soon as I edit the scheme and uncheck the test inside the builds, I am able to run the app on simulator but can't run the tests. 回答1: Always make sure all your test targets has the

200道iOS面试题面试题整理,底层、技术亮点公司需要的这里都有

瘦欲@ 提交于 2020-05-08 17:21:47
100家知名企业今年来iOS面试题合集: 你要的这里都有; 企业要的这里也有; 从基础开始到进阶、深入底层 整理出188个面试题,全是干货 目录展示: 1、swift和oc的区别 2、编译链接 3、synthesize & denamic 4、在项目开发中常用的开发工具有哪些? 5、UITableView & UICollection 6、NSProxy & NSObject 7、Object & Swift 8、传值通知 & 推送通知(本地&远程) 9、第三方库 & 第三方平台 10、NSCache & NSDcitionary 11、 UIView的setNeedsDisplay和setNeedsLayout方法 12、UILayer & UIView 13、layoutSubViews & drawRects 14、UDID & UUID 15、CPU & GPU 16、点(pt)& 像素(px) 17、属性与成员变量 18、int和NSInteger的区别 (1)import和include (2)@class (3)全局 & 静态变量 19、类和对象 (1)分类拓展协议中哪些可以声明属性? (2)继承和类别的区别 (3)分类的作用 (4)分类的局限性 20、category & extension 21、Foundation (1)字符串 (2)字符串截取 (3)格式

SDWebimage相关知识点1-- 线程

你说的曾经没有我的故事 提交于 2020-04-25 13:15:04
一 线程 (thread)是组成进程的子单元,操作系统的调度器可以对线程进行单独的调度。实际上,所有的并发编程 API 都是构建于线程之上的 —— 包括 GCD 和操作队列(operation queues)。 多线程可以在单核 CPU 上同时(或者至少看作同时)运行。操作系统将小的时间片分配给每一个线程,这样就能够让用户感觉到有多个任务在同时进行。如果 CPU 是多核的,那么线程就可以真正的以并发方式被执行,从而减少了完成某项操作所需要的总时间。 NSThread 是 Objective-C 对 pthread 的一个封装。通过封装 直接使用线程可能会引发的一个问题是,如果你的代码和所基于的框架代码都创建自己的线程时,那么活动的线程数量有可能以指数级增长。这在大型工程中是一个常见问题。例如,在 8 核 CPU 中,你创建了 8 个线程来完全发挥 CPU 性能。然而在这些线程中你的代码所调用的框架代码也做了同样事情(因为它并不知道你已经创建的这些线程),这样会很快产生成成百上千的线程。代码的每个部分自身都没有问题,然而最后却还是导致了问题。使用线程并不是没有代价的,每个线程都会消耗一些内存和内核资源。 二 GCD Grand Central Dispatch 通过 GCD,开发者不用再直接跟线程打交道了,只需要向队列中添加代码块即可,GCD 在后端管理着一个 线程池 。GCD

iOS静态库开发中引入的第三方库可能与宿主APP中冲突的解决方案

眉间皱痕 提交于 2020-04-24 03:59:20
SDK开发中我们可能希望使用已有的第三方开源库,比如在发送请求的功能上我们更希望用AFNetworking而非直接使用NSURLSession,又如在实现socket连接时我们更希望用SocketRocket而非自己从零实现。但如果我们直接把AFNetworking的源文件拖到静态库SDK里,而宿主APP也引入了AFNetworking,这时运行代码就会报符号冲突(duplicate symbols)的错误。 符号冲突报错 这时大部分人的解决方案都是手动修改引入到SDK里的开源库代码,包括类名、分类名、全局常量名、协议名等会导致冲突的符号。其实对于像AFNetworking(v3.2.1)这种源码量较少的第三方库来说,需要修改的地方都要多达47个,可想而知这是一项多么低效和易错的解决方案,而且如果下次需要升级SDK中的该第三方库,你需要再重新手动改一遍……下边我们来一步步深入解决这件麻烦事。 首先我们考虑下怎样避免每次都要修改第三方库源码,如果有一个单独的文件来存原符号和重命名符号的对应关系就好了,我们自然而然地会想到用宏定义。创建一个头文件,比如叫 XNGNamespace.h // XNGNamespace.h #define AFURLSessionManager XNGURLSessionManager #define

No such module 'SDWebImage' using pod

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-14 07:29:27
问题 This question is already asked here But no answers work for me. I have tried all the ways which are mentioned below. Open project using .xcworkspace Deleted all the pod related file from project and again pod install even updated the cocoa pods. Added $(inherited) flag in Other Linker Flags. and -ObjC also, so it may find path from pod framework. Added bridging file to import SDWebImage. Deep clean, build every time and restart the project. I am checking all scenario since 4 to 5 hours but I

SDWebImage 原理及使用问题

只愿长相守 提交于 2020-03-22 15:04:39
SDWebImage托管在github上。 https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。 SDWebImage 加载图片的流程 入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。 进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo: ,交给 SDImageCache 从缓存查找图片是否已经下载 queryDiskCacheForKey:delegate:userInfo: . 先从内存图片缓存查找是否有图片,如果内存中已经有图片缓存,SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager。 SDWebImageManagerDelegate 回调 webImageManager:didFinishWithImage: 到 UIImageView+WebCache 等前端展示图片。

关于SDWebimage的内部实现原理

混江龙づ霸主 提交于 2020-03-07 19:35:59
SDWebimage的内部实现原理各路大神都已经剖析的很透彻了 我也来发一下希望大家共同讨论学习 1. 入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。 2. 进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo: 交给 SDImageCache 从缓存查找图片是否已经下载 queryDiskCacheForKey:delegate:userInfo: 3. 先从内存图片缓存查找是否有图片,如果内存中已经有图片缓存, SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager 。 4.SDWebImageManagerDelegate 回调 webImageManager:didFinishWithImage: 到 UIImageView+WebCache 等前端展示图片。 5. 如果内存缓存中没有,生成 NSInvocationOperation 添加到队列开始从硬盘查找图片是否已经缓存。 6. 根据 URLKey

SDWebImage内部实现过程

試著忘記壹切 提交于 2020-03-07 19:34:25
入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。 进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经下载 queryDiskCacheForKey:delegate:userInfo:. 先从内存图片缓存查找是否有图片,如果内存中已经有图片缓存,SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager。 SDWebImageManagerDelegate 回调 webImageManager:didFinishWithImage: 到 UIImageView+WebCache 等前端展示图片。 如果内存缓存中没有,生成 NSInvocationOperation 添加到队列开始从硬盘查找图片是否已经缓存。 根据 URLKey 在硬盘缓存目录下尝试读取图片文件。这一步是在 NSOperation 进行的操作,所以回主线程进行结果回调 notifyDelegate:。

SDWebImage内部实现过程

我是研究僧i 提交于 2020-03-07 19:32:45
1. 入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。 2. 进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经下载 queryDiskCacheForKey:delegate:userInfo:. 3. 先从内存图片缓存查找是否有图片,如果内存中已经有图片缓存,SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager。 4. SDWebImageManagerDelegate 回调 webImageManager:didFinishWithImage: 到 UIImageView+WebCache 等前端展示图片。 5. 如果内存缓存中没有,生成 NSInvocationOperation 添加到队列开始从硬盘查找图片是否已经缓存。 6. 根据 URLKey 在硬盘缓存目录下尝试读取图片文件。这一步是在 NSOperation 进行的操作,所以回主线程进行结果回调

仿SDWebImage

房东的猫 提交于 2020-03-07 19:23:53
仿SDWebImage 目标:模拟 SDWebImage 的实现 说明:整体代码与之前博客上的演练代码的基本一致,只是编写顺序会有变化! 在模仿 SDWebImage 之前,首先需要补充一个知识点:NSOperation自定义操作 下载操作实现 #import "NSString+Path.h" @interface DownloadImageOperation() /// 要下载图像的 URL 字符串 @property (nonatomic, copy) NSString *URLString; /// 完成回调 Block @property (nonatomic, copy) void (^finishedBlock)(UIImage *image); @end @implementation DownloadImageOperation + (instancetype)downloadImageOperationWithURLString:(NSString *)URLString finished:(void (^)(UIImage *))finished { DownloadImageOperation *op = [[DownloadImageOperation alloc] init]; op.URLString = URLString; op