
iOS框架等
文章平均质量分 77
我很白
这个作者很懒,什么都没留下…
展开
-
UISlider小范围滑动不能触发抬起事件的BUG
在进行播放器开发过程中,遇到了一个问题,具体表现就是UISlider在进行小范围内滑动的时候不能正常的触发TouchUpInside和TouchUpOutside。后来抽丝剥茧查看后发现是因为slider的滑动和底层的手势有冲突,导致不能运行;解决过程:该视图继承UIGestureRecognizerDelegate,并实现以下方法- (BOOL)gestureRecognizerShouldBe...原创 2016-10-18 15:15:33 · 2176 阅读 · 0 评论 -
iOS低版本系统启动闪退
最近工作过程中遇到一个问题,调试时9.x系统直接闪退,11.x则不会出现问题,报错如下:dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserN Reason: image not found经查询发现,原因是新版本xcode中Framework,在老版本系统中不支持,导致崩溃。解...原创 2018-05-08 00:53:13 · 987 阅读 · 0 评论 -
调试正常,打包后NSData解析出错的BUG
此BUG特别蹊跷。先介绍一下背景。需求是用http地址,去服务端取到一张图片的文件流,使用秘钥进行异或运算之后,本地展示,即可。BUG表现是,调试状态正常请求-获取NSData-解析成UIImage-展示,很正常。可是打包之后,无论是测试包还是正式包,都不能正常显示图片。由于打包后无法调试,因此排出的很麻烦,未完待续,此处留坑,稍后填...原创 2018-05-08 00:57:45 · 250 阅读 · 0 评论 -
OC,Swift 获取引用计数器ReatinCount
最近调试Swift时需要用到引用计数器,找了半天,在此记录//swift中方法 let count = CFGetRetainCount(self)//swift获取方法//OC方法如下//第一种方式,KVC[obj valueForKey:@"retainCount"] //第二种方式,runTimeOBJC_EXTERN int _objc_rootRetainCoun...原创 2018-05-28 20:45:02 · 1475 阅读 · 0 评论 -
iOS中关于计时器未置空 导致内存泄漏及野指针崩溃的问题研究
我们都知道,在VC中创建计时器,并加入到runLoop中。这时候在页面消失的时候,需要人工invalid计时器,否则会造成内存泄漏。可是在实践中发现,某些情况下,计时器并不会导致内存泄漏。有点懵,经过自己测试发现如下规律。计时器分为两种初始化方法,timerWithTimeInterval:1.0 target:self selector:@selector(func) userInfo:nil ...原创 2018-05-28 23:48:11 · 918 阅读 · 0 评论 -
iOS常用性能监测工具
在进行iOS开发时,如果程序界面稍显卡顿,就需要具体定性分析一下原因,实时监测一下系统软硬件的各项参数。从原理上讲,想严格准确的监测FPS等性能参数,需要费很多的时间精力研究底层,才能保证最终检测数据准确无误,本人没那个能力,有兴趣的可以去csdn之类的大神的帖子去详细研究。本片只提供简单的,Debug使用的小工具。本着不重复造轮子的工具,特整理网上几款常见小工具。1.JPFPSStatu...转载 2018-04-28 23:13:04 · 11633 阅读 · 0 评论 -
iOS手势 总结归纳
最近需要把项目中的播放器中的手势层重构,顺便总结了iOS的手势相关的代码。 1.单击双击共存的代码UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap)];//双击UITapGestureRecognizer *doub...原创 2016-10-18 14:21:30 · 445 阅读 · 0 评论 -
iOS代码调节音量、亮度不显示图标
之前在重构播发器的时候,在进行滑动调节音量、亮度的时候发现可以实现调节,但是没有音量、亮度的图标。很是蹊跷。最早音频是有图标的,修改手势后就没有了。只是修改了逻辑并没有修改视图,不知道是啥原因。然后把调节音频的代码从[MPMusicPlayerController applicationMusicPlayer];.volume += degree;变成[MPMusicPlayerControlle...原创 2016-10-19 15:54:05 · 2384 阅读 · 0 评论 -
超长标题显示及自动消失
工程中后台返回了超长的msg,显示的时候mbp超出屏幕后自动变成。。。,不符合设计,于是自定义了个标题,在此mark一下: NSString * string = @"这是一个超长标题测试这是一个超长标题测试这是一个超长标题测试这是一个超长标题测试这是一个超长标题测试"; UIAlertController *alertController = [UIAlertControll...原创 2016-11-03 16:56:15 · 379 阅读 · 0 评论 -
UIAlertController Demo
在iOS8中,alertView有所改变,简化了代码量,简单Demo如下: UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"返回可能导致未保存的数据丢失,\n确定返回吗?" preferredStyle:UIAlertControllerStyleAle...原创 2016-08-03 10:50:22 · 508 阅读 · 0 评论 -
UIView生命周期
UIView和UIViewController一样,也有自己的生命周期。UIView生命周期包含的常见方法UIView包含的常见方法如下:- (void)didAddSubview:(UIView *)subview;- (void)willRemoveSubview:(UIView *)subview;- (void)willMoveToSuperview:(nullable UIV...原创 2018-04-28 16:08:09 · 12563 阅读 · 0 评论 -
UIView,CALayer,UIWindow 的关系和区别
这是一个很常见的问题很多博客也做了解读,我也查看了一些博客,总结如下:由于继承自不同的基类,UIView和CALayer有不同的侧重点,UIView侧重于事件传递及处理,CALayer侧重于显示渲染,两者一对一对应。UIWindow继承与UIView,是一种最特殊的View,一般一个App只有一个UIWindow对象,就是在AppDelegate中MakeKeyAndVision那个。如果某个vi...原创 2018-05-12 16:52:20 · 340 阅读 · 0 评论 -
UIView的DrawRect方法详解
UIView的DrawRect方法,简单说:用来干啥的:就是用来绘图的。如果需要在View中绘制新的一些图形,比如曲线,直线,椭圆等,都需要重写DrawRect方法才可以;什么时候调用:当View显示的时候调用(ViewWillAppear和ViewDidAppear之间)。如果View是隐藏的,也会调用的。转屏会调用,从新设置Frame时会调用;参数rect:当View的bounds 在draw...原创 2018-05-12 19:01:33 · 3708 阅读 · 0 评论 -
KVC底层实现原理
KVC,兼职编码,是OC中很常用的一种赋值/取值方法,原理也是基于Runtime运行时,动态的赋值/取值。简单来说,具体实现如下:a. setValue:forKey的搜索方式:1. 首先搜索set<Key>:方法如果成员用@property,@synthsize处理,因为@synthsize告诉编译器自动生成set<Key>:格式的setter方法,所以这种情况下会直接搜...原创 2018-05-12 19:14:21 · 2153 阅读 · 0 评论