自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 使用信号量造成线程优先级反转

在使用Source时,线程A等待事件到来,线程A转为就绪态,因为线程A优先级比线程C高,所以线程A会立即执行。会通过提高相关线程的优先级来解决优先级反转的问题 (如线程A在尝试获取共享资源而被挂起的期间内,将线程C的优先级提升到同线程A的优先级,等线程C处理结束,降回原优先级,这样能防止C被B抢占)。dispatch_semaphore 容易造成优先级反转,因为api没有记录是哪个线程持有了信号量,所以有高优先级的线程在等待锁的时候,内核无法知道该提高那个线程的优先级(QoS);

2023-05-23 21:14:54 392

原创 在mac上安装不同版本的cocoapods

HomebrewHomebrew是一款Mac OS平台下的软件包管理工具,类似于APP Store安装Homebrew安装homebrew :/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”但是这个因为网络资源原因,下载速度慢,解决办法:替换镜像,将下载资源改为国内镜像资源即可更新Homebrew : brew update更新所有安装过的软件包 :

2021-04-12 10:50:10 513

原创 内联函数、使用类别增加属性、struct类型转换

为View增加平滑的圆角项目改版,需要在项目中实现整体的一个平滑的圆角的方案,实现过程遇到诸多问题,记录一下,以免日后再次踩坑。因为是使用category实现的,想通过category给view增加一个可以设置四个角弧度的属性,category里面增加属性的时候,自定义了一个struct类型的属性,typedef struct Corner { CGFloat topLeft; CGFloat topRight; CGFloat bottomLeft; CGFloat bottomRight;

2021-04-02 10:14:14 141 2

原创 URL为什么需要编码解码

URL编码解码URL为什么需要编码解码URL为什么需要编码解码我们的http协议中的参数传输是 key=value 这种键值对形式的,如果需要传多个参数,就需要用 & 符号对键值对进行分割,如 name1=value1&name2=value2&name3=value3,这样服务端在收到这种字符串的时候,会用&分割出每一个参数,然后再用=来分割出参数值;但是如果value中包含&或者=这种特殊字符怎么办,比如name1=value1,其中value1=va&amp

2021-03-01 16:12:27 336

原创 写一个不规则矩形,四个角度可以各不相同

其实就是用贝塞尔曲线画出来的- (void)drawRect:(CGRect)rect{ [super drawRect:rect]; CGFloat minX = CGRectGetMinX(rect); CGFloat minY = CGRectGetMinY(rect); CGFloat maxX = CGRectGetMaxX(rect); CGFloat maxY = CGRectGetMaxY(rect); CGFloat t

2020-08-12 14:32:12 314

原创 深拷贝浅拷贝

一直对深拷贝和浅拷贝模糊理解,在项目中遇到问题才知道自己没理解透彻。浅拷贝:拷贝指针,指向原地址指针指向的内存,其实就是,浅拷贝出来的内容发生改变,原数据也会发生变化,因为原指针和拷贝出来的指针都指向同一块内存,通过指针找到内容,改变内容,那么两个当然都会发生变化。深拷贝:创建一个新的指针,开辟一块新的内存,从原来内存里面拷贝一份数据的内容出来,并用新指针指向新内容的这块内存和原来的完全没有关系。不管是原数据改变还是拷贝内容的改变都不会影响到另一个非集合对象比较典型的是字符串, 通过查看NSStr

2020-07-30 17:58:37 107

原创 ARC下的Dealloc原理解读

需求告一段落,需要学习的东西实在太多了,最近崩溃数据监测到时有崩溃是在.cxx_destruct时候崩溃,看着像是dealloc的东西,所以抽空给解读一下dealloc。一、一些总结性的东西1、前段时间出现过这样的一个崩溃,在dealloc中 写了这样几句代码- (void)dealloc{ self.mainTableView.dataSource = nil; self.mainTableView.delegate = nil; self.refreshHeaderVie

2020-07-01 16:19:30 1506

原创 使用Masonry布局后不能立即获取到frame

经常有这样的需求,给view添加圆角,目前用过三种实现方式,第四种我也没用过。圆角总容易伴随着离屏渲染的问题1 、设置layer.cornerRadius属性view.layer.cornerRadius = 50;如果是给一个view 这种content为空的视图设置圆角,上面就达到了效果,如果是给UILabel 或者 UIButton 或者给CollectionView的一个item,contents不为空的视图设置圆角就不管用,需要两行代码共同使用lab.layer.cornerRadius

2020-05-25 10:07:20 1065

原创 stringByAddingPercentEscapesUsingEncoding

当网址中含有中文字符的时候我们无法直接使用,需要把网址的字符串编码后再转为URL,由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url包含非保准url的字符的时候,就需要对其进行编码。iOS中提供stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码。但是stringByAddingPercentEscapesUsingEncoding 的功能并不完善,对一些较为特殊的字符无效,对这些字符可以使用 CFURLCreateStrin

2020-05-21 18:17:52 1769

原创 重复addSubview 同一个view并不会产生多层级的结构

先讲一下产品需求,tableview有两个section,但是要自定义一个view一直吸顶。使用section-headview的话,在滑动到第二个section的时候,会使用第二个header作为吸顶view,但是需求是segment(一个自定义view)一直吸顶,那就把segment在refreshTableHeaderview(自定义的方法,在网络请求成功后刷新头部视图)的时候,添加到tableview上了,此处有疑问,每次网络请求都会添加一次,也就是多次添加,那是不是就意味着,多个层级;被同事用怀疑

2020-05-20 17:55:09 1343

原创 亲自踩过的坑才是坑

亲自踩过的坑才是坑在Dealloc使用weak造成的崩溃使用图片一定要添加contentMode在Dealloc使用weak造成的崩溃从一个h5页面跳转到原生页面的时候,快速点击两次,在原生页面崩溃;崩溃信息:Cannot form weak reference to instance (0x7ffd73a0f200) of class ShareOrderMPVReplyViewController. It is possible that this object was over-release

2020-05-19 10:56:58 1415

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除