sdwebimage

iOS 14下面图片无法加载,包括weex、YYAnimateView、SDAnimatedImageView

≡放荡痞女 提交于 2021-02-10 17:53:57
升级xcode12后,编译运行App发现大片大片的图片加载不出来,包括weex的图片和YYAnimateView的图片都有问题。 经过一番研究之后,发现是iOS 14下UIKit对 `displayLayer:`的处理机制有所变化。 `displayLayer:`是`CALayerDelegate`的代理方法。在iOS 14之前,UIKit在调用这个方法之前就会去渲染`UIImageView.image`。 而在iOS 14,UIKit则是先去调用代理方法,如果你实现了`displayLayer:`这个方法,那么UIKit就不会再去渲染了。 如果改成下面这样就可以正常加载了: ``` - (void)displayLayer:(CALayer *)layer { UIImage *currentFrame = _curFrame; if (currentFrame) { layer.contentsScale = currentFrame.scale; layer.contents = (__bridge id)currentFrame.CGImage; } else { // If we have no animation frames, call super implementation. iOS 14+ UIImageView use this delegate method

iOS面试题总结

有些话、适合烂在心里 提交于 2021-01-10 14:08:46
[TOC] 1. 多线程的底层实现? 1. 首先搞清楚什么是线程、什么是多线程 2. Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于Mach的线程 3. 开发中很少用Mach级的线程,因为Mach级的线程没有提供多线程的基本特征,线程之间是独立的 4. 开发中实现多线程的方案 C语言的POSIX接口:#include <pthread.h> OC的NSThread C语言的GCD接口(性能最好,代码更精简) OC的NSOperation和NSOperationQueue(基于GCD) 2. 线程间怎么通信? 1. performSelector:onThread:withObject:waitUntilDone: 2. NSMachPort 3. 网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题? 利用字典(图片地址为key,下载操作为value),具体可以查看SD缓存机制 4. 用NSOpertion和NSOpertionQueue处理A,B,C三个线程,要求执行完A,B后才能执行C,怎么做? NSOperationQueue *queue = [[NSOperationQueue alloc] init]; NSOperation *A = [NSBlockOperation blockOperationWithBlock:^{ NSLog

2019安装cocoaPods

天大地大妈咪最大 提交于 2020-12-18 04:31:09
检索关键词:2019 CocoaPods使用 查看版本:gem --version 输出: 2.7.7 更换Ruby 源: gem sources --remove https://rubygems.org/ gem sources --add https://gems.ruby-china.com/ 淘宝的源好像不能用了用这个:https://gems.ruby-china.com/ 安装cocoapods: sudo gem install cocoapods 报错: ERROR: While executing gem ... (Gem::FilePermissionError) You don ' t have write permissions for the /usr/bin directory. 输入: sudo gem install -n /usr/local/bin cocoapods 输出: Successfully installed httpclient-2.8.3 Fetching: algoliasearch -1.27.1.gem (100% ) Successfully installed algoliasearch -1.27.1 Fetching: cocoapods -core-1.8.4.gem (100% ) Successfully

字节iOS开发岗面试真题(已拿offer)

放肆的年华 提交于 2020-08-13 03:01:34
序言 疫情基本控制,同时面试也渐渐开始了,以下iOS面试题仅供参考,毕竟面试是不可控的,但懂得越多,自然机会越大! 字节一面内容: 1、 自我介绍 2、 介绍一下简历中的一个项目 3、 面向对象的三个要素 4、 多态? 5、 Java,python,OC运行效率孰高? 6、 Property,其中copy如何? 7、 Property(nonatomatic, copy) NSMutableArray有什么问题 8、 Copy和MutableCopy的区别 9、 解释下类别,原理 10、解释下封装,重载; 11、 OC存在多重继承吗? 12、了解表视图吗,解释一下复用原理 13、说明一下表视图的滑动卡顿的优化方法 14、viewDidLoad和viewDidAppear的调用时机(一次和多次的区别); 15、页面间的传值方式有哪些(公有属性,公有方法和协议,block传值,通知,extern全局变量传值, NSUserDefault简单数据存储传值); 16、通知和delegate的区别? 17、 通知的发送和接收是否在同一线程? 18、HTTP和HTTPS区别? 19、OC中多线程一般有几个方案? 20、了解NSURLConnection和Session吗? 21、说一下NSURLSession具体的实现原理 22、http的头部的几个码。; 23、编程题:实现一个二叉树的倒置。

总结:iOS中多线程的经典崩溃

妖精的绣舞 提交于 2020-08-12 10:51:37
前言 iOS崩溃是让iOS开发人员比较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地方很重要。调试阶段是比较容易找到出问题的地方的,但是已经上线的app并分析崩溃报告就比较麻烦了。 本文将给大家总结介绍关于iOS中多线程的一些经典崩溃,下面话不多说了,来一起看看详细的介绍吧。 Block 回调的崩溃 在MRC环境下,使用Block 来设置下载成功的图片。当self释放后,weakSelf变成野指针,接着就悲剧了 __block ViewController *weakSelf = self; [self.imageView imageWithUrl:@"" completedBlock:^(UIImage *image, NSError *error) { NSLog(@"%@",weakSelf.imageView.description); }]; 多线程下Setter 的崩溃 Getter & Setter 写多了,在单线程的情况下,是没有问题的。但是在多线程的情况下,可能会崩溃。因为[_imageView release]; 这段代码可能会被执行两次,oops! UIKit 不是线程,所以在不是主线程的地方调用UIKit 的东西,有可能在开发阶段完全没问题,直接免测。但是一到线上,崩溃系统可能都是你的崩溃日志。Holy shit! 解决办法

SDWebImage源码解析之SDWebImageManager的注解

烂漫一生 提交于 2020-08-11 16:43:43
/* * This file is part of the SDWebImage package. * (c) Olivier Poitrey * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ #import "SDWebImageCompat.h" #import "SDWebImageOperation.h" #import "SDWebImageDownloader.h" #import "SDImageCache.h" typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { /** * By default, when a URL fail to be downloaded, the URL is blacklisted so the library won't keep trying. * This flag disable this blacklisting. */ /** *默认情况下,如果一个url在下载的时候失败了,那么这个url会被加入黑名单并且library不会尝试再次下载

整理:iOS开发知识点

白昼怎懂夜的黑 提交于 2020-08-11 09:24:49
iOS学习面试相关问题整理,希望能巩固自己的基础知识,当然也希望能帮助更多的开发者。 数据结构 1.数据结构的存储一般常用的有几种?各有什么特点? 2.集合结构 线性结构 树形结构 图形结构 3.单向链表 双向链表 循环链表 4.数组和链表区别 5.堆、栈和队列 6.输入一棵二叉树的根结点,求该树的深度? 7.输入一课二叉树的根结点,判断该树是不是平衡二叉树? 算法 1.时间复杂度 2.空间复杂度 3.常用的排序算法 4.字符串反转 5.链表反转(头差法) 6.有序数组合并 7.查找第一个只出现一次的字符(Hash查找) 8.查找两个子视图的共同父视图 9.无序数组中的中位数(快排思想) 10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 Foundation 1.nil、NIL、NSNULL 有什么区别? 2.如何实现一个线程安全的 NSMutableArray? 3.atomic 修饰的属性是绝对安全的吗?为什么? 4.实现 isEqual 和 hash 方法时要注意什么? 5.id 和 instanceType 有什么区别? 6.self和super的区别 7.@synthesize和@dynamic分别有什么作用? 8.typeof 和 typeof,typeof 的区别? 9.类族 10.struct和class的区别 UIKit 1.UIView 和

2020年面向iOS开发的知识点总结(持续更新中)

扶醉桌前 提交于 2020-08-10 23:57:43
前言: 最近在整理自己的技术栈,收集了一些自己认为比较重要的知识点分享给大家。 Runloop 1.iOS中触摸事件传递和响应原理 2.为什么只有主线程的runloop是开启的 3.为什么只在主线程刷新UI 4.PerformSelector和runloop的关系 5.GCD 在Runloop中的使用? 6.AFNetworking 中如何运用 Runloop? Runtime 1.Category 的实现原理? 2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型? 3.Objective-C 如何实现多重继承? 4.runtime 如何实现 weak 属性? 5.Objective-C 的消息机制如何理解? 6.runtime具体应用 7.runtime如何通过selector找到对应的IMP地址? 8.简述下Objective-C中调用方法的过程 9.怎么理解Objective-C是动态运行时语言。 KVO 1. 实现原理 2. 通过KVC修改属性会触发KVO么?KVC的赋值和取值过程是怎样的?原理是什么? 3. 哪些情况下使用kvo会崩溃,怎么防护崩溃 4. kvo的优缺点 Block 1. block的内部实现,结构体是什么样的 2. 一个int变量被__block修饰与否的区别? 3. block在修改NSMutableArray,需不需要添加_

来自一份大牛的 iOS 开发大厂面试全攻略(2020斩获offer)

▼魔方 西西 提交于 2020-08-09 22:37:38
前言 2019年可能是过去十年里最差的一年,却是未来十年里最好的一年。 2020 一场突如起来的疫情,打乱了很多人的生活节奏。我恰好在年后因为一些原因要找工作,也看到周围很多朋友有聊到在疫情期的求职百态,掺杂着个人几年来的面试经验和感悟写下的了本文。 面试过程 在疫情期间都是远程面试,下边先介绍一下疫情期间面试的一些公司的面试情况。同时拿到了其中几家的 offer。下边介绍的面试题只还原了其中印象比较深的部分,会存在不足的情况,并不代表面试的全部。 百度iOS面试 一面 1、iOS基础知识 2、Python基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等。 3、iOS一些源码的阅读 4、优秀的第三方框架源码阅读 5、GLSurfaceView的相关知识,OpenGL,Shader,绘制流程。 6、询问当前做的项目,以及到具体的实现和优化。 7、多进程间的通讯,Binder机制。 8、询问看过哪些框架源码,EventBus,Volley讲了一下。 二面 1、Delegate 、Notification和KVO比较各自的优缺点 2、在一个UI的正中间实现一个正方形的红色视图有几种方式? 3、手触碰到屏幕的时候,响应机制是怎样的?第一响应者是谁?追问 UIView和UIResponse的关系是什么? 4、UIViewController的生命周期是什么?追问

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

允我心安 提交于 2020-07-19 04:13:08
问题 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