自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NSString属性为什么要用copy

关于NSString作为属性的时候为什么要用copy,而非strong:1、首先copy 分为深拷贝和浅拷贝,深拷贝是拷贝内容并存放到另一份内存空间,浅拷贝是指针拷贝,会随着内存中对象值的变化而变化;2、NSString copy 浅拷贝 得到NSStringNSMutableString copy 深拷贝 得到NSStringNSString mutableCopy 深拷贝 得到NSMutableStringNSMutableSt

2022-02-22 16:39:08 2493

原创 OC方法传参的本质

OC方法参数的传递 实际上就是指针指向的对象(或基本数据类型的值)传递;//Demo验证(void)methodPass{Person *per = [[Person alloc] init];per.age = 18;NSLog(@“per :%p , %p” , per , &per);[self run:per];NSLog(@“per :%p , %p” , per , &per);// per :0x600001a60170 , 0x7ffee7187138

2021-11-26 18:58:46 1592

原创 Super关键字

super关键字:super 本质上是一个封装了receiver、superclass成员的结构体:{receiver(消息接收者,实际就是self)superclass(指向父类的指针)}例如:[super init] 就是向self发送objc msgsend(@select(init)),只是init方法要从父类开始找。...

2021-11-23 15:21:15 223

原创 野指针、僵尸对象、assign修饰对象问题

首先内存回收的本质:1、申请一块空间,实际上是向系统申请一块别人不再使用的空间;2、释放一块空间,指的是占用的空间不再使用,这个时候系统可以分配给别人去使用;3、这个空间在分配给别人之前,原来的数据还是存在的;3.1、OC对象释放后,表示OC对象占用的空间可以分配给别人使用;3.2、但是在分配给别人之前,这个空间里对象的数据仍然存在;僵尸对象:一个已经被释放的对象就叫做僵尸对象野指针:当所指向的对象被释放或者被回收,但是对该指针没有做任何的修改(没有置为nil),以至于该指针仍旧指向已经回收的

2021-10-26 15:50:50 214

原创 Https请求原理和步骤总结

Https请求原理和步骤总结:1、客户端 ——> 服务端 发起请求2、服务端 ——> 客户端 发数字证书(数字证书里面包括 公钥、证书颁发机构、证书有效期、证书所有者、签名所使用算法、指纹以及指纹算法)3、客户端 ——> 服务端 客户端拿到数字证书,就拿到了公钥,也能校验数字正式是否合法,证书的所有者是哪个机构4、客户端 ——> 服务端 发送一个随机字符串(用户确认对方是否是冒牌货)5、服务端 ——> 客户端 服务端拿到字符串,先用hash算法算出一个hash值,然后

2021-10-21 15:56:21 1648

转载 iOS 容错AvoidCrash

AvoidCrash1、若集成了腾讯Bugly或者友盟等等异常搜集的SDK,AvoidCrash会影响到它们的异常搜集吗?首先要清楚的一点是,对于一些第三方crash信息搜集工具,比如Bugly或者友盟,它们只有当程序出现异常(崩溃)的时候才会搜集异常信息。而AvoidCrash的作用是,防止部分常见异常的发生,异常被AvoidCrash捕获了,程序就不会崩溃,第三方crash信息搜集工具就不...

2020-03-13 16:44:43 743

原创 iOS IQKeyboardManager

IQKeyboardManagerIQKeyboardManager是一个自动解决键盘遮挡输入源的库。输入源目前只有UITextView和UITextField;解决方法是让界面内容上移到合适位置让输入框在键盘之上,或者点击屏幕空白处,键盘自动回收。pod 集成 pod ‘IQKeyboardManager’原理简述:pod集成后,甚至可以一句代码不写都可以解决键盘遮挡问题,因为IQK...

2020-03-13 16:39:59 458

转载 iOS 13上传ipa报错

Xcode 11 用Transporter上传ipa包报错 INFO: Invalid checksum on resource download for: https://contentdelivery.itunes.apple.com/transporter/repositories/j2se8/2.0.0/bundles/org.xerial.sqlite-jdbc-3.27.2.1.ja...

2020-03-12 19:05:12 1115

原创 iOS uuid、udid、idfa、idfv

1、UDID (Unique Device Identifier)iOS设备的唯一识别符,它由40位16进制数的字母和数字组成,除了越狱,没什么办法可以改变它;移动广告商和游戏网络运营商往往需要通过UDID用来识别玩家用户,并对用户活动进行跟踪。代码实现 : [[UIDevice cuurrent] uniqueIdenfier]UDID 在 iOS5.0 的时候已经被抛弃使用了,使用的话...

2020-03-12 15:13:32 581

原创 iOS 13 Tabbar适配

UIFont *font = FONT(RU_WIDTH(11));if (@available(iOS 13, *)){//iOS 13 需要以下两行代码,这种方式,设置字体颜色,否则当控制器push到一个隐藏tabbar的页面,再返回来,字体颜色就被修改成默认色了[[UITabBar appearance] setUnselectedItemTintColor:MediumTextCol...

2020-03-11 18:32:44 501

转载 iOS 13 适配问题

1.UISearchController上的SearchBar显示异常,高度变为只有1px。解决方法:解决办法是使用KVO监听frame值变化后设置去应该显示的高度。2.iOS13禁止使用valueForKey、setValue: forKey的方式获取和设置私有属性,会引起crash。解决方法:使用其他方法替换。3.TabBar上设置的红点会偏移到左上方。遍历UITabBarButton...

2020-03-11 18:27:54 154

原创 iOS 图片拉伸问题

iOS 开发中,图片拉伸,设置局部拉伸,通常使用UIImage提供resizableImageWithCapInsets方法,,设置缩紧,top、left、bottom、right部分不拉伸,只拉伸剩余的中间部分。需要注意的是:resizableImageWithCapInsets只对@2x图片有效。resizingMode类型:1、UIImageResizingModeTile:使用参与拉...

2020-03-10 17:47:06 346

原创 iOS 耗电、冷启动、安装包优化

耗电的主要来源:1、CPU处理数据;2、网络Networking;3、定位Location;4、图像Graphics;优化方案:1、尽量少用定时器;2、优化I/O操作(文件读取操作);尽量不要频繁写入小数据,最好批量一次性写入。读写大量重要数据时,考虑用dispatch_io,其提供了基于GCD的异步操作文件I/O的API。用dispatch_io系统会优化磁盘的访问。数据量比...

2020-03-06 15:14:04 144

原创 iOS 卡顿优化

卡顿优化:卡顿主要是在主线程执行了比较耗时的操作。CPU:(Central Processing Unit,中央处理器)负责,对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Co re Graphics)。GPU:(Graphics Processing Unit,图形处理器) 负责纹理的渲染。卡顿产生的原因:屏幕上每一帧数据的展示过程是...

2020-03-06 11:53:01 218

原创 oc 内存

自己理解代码区(code segment/text segment) 存放程序员写的代码,main()函数中的demo (编译器处理好的)数据区(data segment) 一般存放已经初始化的全局变量和静态变量 (编译器处理好的)bss段( bss segment ) 存放未初始化的全局变量和静态变量堆区(heap) 存储动态分配的内存,alloc、malloc ,这种程序员手...

2020-02-27 19:15:25 125

原创 iOS block原理

block的原理是怎样的?本质是什么?答:block本质上是个OC对象,内部也有isa指针。block是封装了函数调用和调用环境的OC对象。为了保证block内部能够访问外部变量,block有一个捕获机制。只要是局部变量,都能捕获,auto类型(自动变量,超出作用域就自动释放,存放在栈区,例如:NSString *str = @“abc”;),捕获值;static类型(静态变量,只初始...

2020-02-27 19:10:16 493

原创 iOS 转json浮点型数据丢失精度

前几天项目中遇到一个商品价格丢失精度的问题。服务端返回的价格是number类型;我用上面的方式,将接受到的二进制数据responseObject转成json发现价格是80.0400000000001;但是安卓同事说他接收到的数据就是80.04。然后我就怀疑是转json的时候,丢失的精度。索性直接把二进制ut8编码成字符串,发现价格确实是80.04。然后开始查json序列化的时候出现了什么问题...

2020-02-27 14:46:53 440

原创 iOS NSDate和UTC时区时间的转化

iOS开发过程中,服务端为了兼容国际化,返回给客户端的时间是带有时区的字符串格式(例如:“2020-02-25T06:02:44.000+0000”),我们需要把它转化成本地时区的时间(例如:2020-02-25 14:02:44)。/**将UTC日期字符串转为本地时间字符串eg: 2020-02-21T07:24:41.000+0000 -> 2020-02-21 15:24:4...

2020-02-27 14:19:40 2657

原创 iOS Category原理

Category:分类。1、Category的使用场合是什么?答:当需要将一个类拆分的时候使用。2、Category的实现原理?答:Category编译之后的底层结构是结构体struct category_t,里面存储着分类的对象方法、类方法、属性、协议信息。程序运行的时候,Runtime 会将Category的信息合并到类信息中(class类对象、mate-class元类对象),后合并...

2020-02-26 19:26:28 294

原创 iOS KVO、KVC原理

KVO全称(Key-Value Observing)键值监听,用于监听某个对象属性值的变化。1、iOS用什么方式实现对一个对象的KVO (KVO的本质是什么)?答: 当给一个instance对象的某个属性添加KVO时,系统会利用Runtime API动态生成一个子类,并让instance对象的isa指向这个全新的子类。当修改instance对象的属性值时,会调用Foundation的_NSS...

2020-02-26 17:09:41 371

原创 OC NSObject和isa

1、一个NSObject对象占多少个内存?答:系统会分配16个字节给NSOobject对象(可通过malloc函数获得);但是NSObject内部只用了8个字节空间(64bit环境下)(可通过classgetinstancesize函数获得)。2、对象的isa指针指向哪里?答:OC中对象分三种:1、instance(实例对象),通过alloc创建;2、class(类对象),通过class方法...

2020-02-26 16:07:03 193

转载 iOS集成阿里百川,主线成阻塞问题

集成阿里百川,调用[AlibcTradeSDK sharedInstance].tradeService openByUrl 方法打开淘宝时,页面调起特别慢,xcode控制台提示主线成阻塞,如下图以为是我代码写的有问题,下载官方demo运行一波,发生了了同样的情况;跟阿里技术沟通后,确定是UTDID.framework框架里,在子线程调用了刷新UI的操作,只会在debug模式下阻塞,拔掉线就不会有...

2020-02-26 11:21:25 416

原创 iOS 切圆角离屏渲染问题

GPU屏幕渲染有两种方式:1、On-Screen Rendering(当前屏幕渲染)指的是GPU的渲染操作是在当前显示的屏幕缓冲区进行。2、Off-Screen Rendering(离屏渲染)指的是GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作。离屏渲染的代价很高体现在两个方面,1、需要创建一个新的缓冲区。2、上下文切换操作。会引发离屏渲染的操作:1、为图层设置遮罩(layer...

2019-11-04 17:20:27 870

原创 Ios内购防漏单、刷单、订单重复

Ios苹果支付流程:1、客户端先从苹果获取内购Id。2、客户端将内购id,金额、用户id等传给服务端获取一个自己服务端生成的订单号。3、客户端向苹果发起支付。4、支付成功后,客户端从本地拿支付凭证、将支付凭证和订单号、用户id等参数传给服务端;服务端拿支付凭证向苹果发起验证订单是否有效,然后将结果反馈给客户端。5、客户端刷新用户个人信息。漏单:以上流程中可能会出现漏单的情况:当客户端...

2019-10-28 14:58:20 4104

原创 iOS 录音踩坑之旅

公司产品需求做一个录音功能,要求可以添加背景音乐,支持边录边播,录音试听、暂停录音、实时绘制音波图、以mp3格式上传服务端等功能。1、使用iOS自带API:AVAudioRecorder录音wav格式音频,存储到本地,录音暂停(pause)的时候,路径下并没有生成真正的音频文件(没有任何声音),只有调用stop结束录音,才会生成完整的wav文件。2、解决办法:暂停(pause)就是结束(sto...

2019-09-02 19:16:34 381

转载 iOS stastic和extern关键字

OC Stastic、Extern关键字的使用extern用来修饰全局变量(也成外部变量),作用域是整个源程序。stastic静态变量,只初始化一次,只有一份内存(直到程序结束才销毁);修饰全局变量时,作用域仅限当前文。...

2019-09-02 18:43:48 125

空空如也

空空如也

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

TA关注的人

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