- 博客(22)
- 收藏
- 关注
原创 iOS LGMagicRefresh 很好用的刷新控件
github:https://github.com/jamy0801/LGMagicRefresh样式: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
2016-02-26 14:55:02
540
原创 NSUrlSession NSUrlConnection https连接时证书无效的解决办法
The certificate for this server is invalid 最近公司项目需要从网络端获取部分数据,原来的接口是http的,iOS9引入的ATS机制: 所有的http请求都改成了https,采用TLS 1.2协议,目的是增强数据安全。如果不更新的话,暂时可以在Info.plist中声明,使用不安全的网络请求。首先我们在info.plist中加入以下参数:<key>
2016-01-28 12:28:18
15099
1
原创 UICollectionView执行performBatchUpdates 奔溃
今天在调试代码的时候发现程序奔溃:func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { collectionView.performBatchUpdates({ () -> Void in coll
2016-01-12 17:56:18
15735
原创 iOS多线程之NSThread
每个应用程序都有一个和用户交互,处理UI事件的线程,称之为主线程,所有的UI操作及交互都必须要放在主线程处理,但是一般应用都会涉及到复杂的处理过程,如网络请求,数据库查询等等,如果我们把这些操作也放在主线程,那么将会造成主线程卡顿,严重影响用户体验~~~ 在iOS中,apple提供了三种线程操作方式:NSThread, NSOperation, GCD,我们先看看NSThread的基本使用:特性N
2016-01-05 18:15:01
397
原创 iOS core Data 详解-<2>多线程
在之前的介绍中,我们操作core data都是在主线程的,但是有的时候,我们对core data的操作可能会消耗很长的时间,比如类似微博,在程序启动的时候会加载之前存储在数据库中的数据,如果都在主线程操作的话,那么将会照成主线程堵塞,给用户不好的体验,这是我们就需要使用Core Data的多线程特性!多线程解决方案core data不是线程安全的,所以我们不能跨线程去操作它,如果涉及多线程的操作,最
2016-01-05 16:23:27
430
原创 iOS core Data 详解-<1>基本使用
Apple给我们提供了Core Data框架,它提供了对象-关系映射(ORM)功能,可以将OC对象转换为数据进行存储,也可以将保存在数据库中的数据还原成OC对象,可以直接按对象的方式操作数据,让这些变得非常简单。 core data是iOS应用中一种很好的持久性数据存储方式,从本质上来说,core data使用的SQLite, 所以效率也非常高,而且它可以很好的管理内存,它是对底层SQLite接口
2016-01-04 23:48:42
577
原创 iOS三种定时器
在软件开发过程中,我们有时需要程序重复的执行某件事情,或者延迟时间去做事情,这时候我们就需要用到定时器,在iOS中,有三种常用的定时器,NSTimer, CADisplayLink, GCD dispatch_timer_t, 下面就几种定时器的常见用法进行介绍~NSTimer几种常见使用方法NSTimer *timer = [NSTimer scheduledTimerWithTimeInte
2016-01-04 23:17:39
452
原创 IOS7 自定义手势返回 interactivePopGestureRecognizer
iOS7增加了一个新的手势返回功能,interactivePopGestureRecognizer,系统帮助我们实现了手势驱动百分比的实现,现在的APP内建都带了此功能。但是最新再项目中遇到一个新的问题:需要自定义一个返回的按钮:self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:vi
2015-12-30 21:29:59
722
原创 忽略performSelector在ARC下的警告
在OC中调用performSelector方法时,可以会出现找不到调用方法的警告:performselector-may-cause-a-leak-because-its-selector-is-unknown ,如果使用过多的话警告会很多。 解决方法: 1:#pragma clang diagnostic push#pragma clang diagnostic ignored "-Warc
2015-12-30 17:19:29
561
转载 Objective-C Runtime 运行时之:Method Swizzling
Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现。例如,我们想跟踪在程序中每一个view controller展示给用户的次数:当然,我们可以在每个view controller的viewDidAppear中添加跟踪代码;但是这太过麻烦,需要在每个view controller中
2015-12-29 17:25:37
461
原创 Objective-C Runtime<1>
简介Objective-C是一门动态语言,它把一些决策性的判断从编译连接时段推迟到运行时段。OC是动态处理这些事情的。这就是说OC需要的不仅仅是一个编译器,而且需要一个运行时系统来运行它编译的代码。运行时系统对OC来说是一个操作系统,是OC框架的基石! 虽然再平时的编码过程中我们用到的不太多,但了解runtime对我们是有很大的帮助的,尤其是扩展一些方法属性等等。和runtime交互Objecti
2015-12-29 16:14:29
322
原创 IOS8 H264硬件解码
SPS,PPS数据提取使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两项从哪里获取呢?答案是从H264码流中获取.在H264码流中,都是以”0x00 0x00 0x01”或者”0x00 0x00 0x00 0x01”为开始码的,找到开始码之后,使用开
2015-12-29 13:40:57
5245
原创 IOS9禁用UIWebView的放大镜
UIKit提供UIWebView组件,允许开发者在App中嵌入Web页面。通过UIWebView组件,我们可以在应用中很方便的嵌入HTML页面。在利用IOS原生的组件进行界面开发时,界面UI元素的布局比较麻烦,特别是现在的主流O2O网站,数据更新快,维护难度较大,而且apple store提交审核周期过长,很容易影响数据的更新周长。与原生组件相比,HTML本身的结构性语义性较强,利用CSS能更加方便
2015-12-29 10:29:51
4235
原创 iOS平台使用ffmpeg解码h264视频流
对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或URL传入即可打开。读取视频数据、解码器初始参数设置等,都可以通过调用API来完成。但是对于h264流,没有任何封装格式,也就无法使用libavformat。所以许多工作需要自己手工完成。这里的h264流指AnnexB,也就是每个nal unit以起始码00 00 00 01 或
2015-12-29 10:09:02
3625
原创 UIGraphicsBeginImageContext 获取图片、截图
通过UIGraphicsBeginImageContext可以将一张图片画到指定位置,也可以通过该方法来截取屏幕固定区域的图片,具体实现如下: 1: 画图func drawImage(image: UIImage) -> UIImage { UIGraphicsBeginImageContext(CGSizeMake(100, 100)) image.drawInR
2015-12-28 22:56:14
826
原创 IOS通过sskeychain获取唯一标识
IOS7之前的做法1.[UIDevice uniqueIdentifier]苹果总是把用户的隐私看的很重要。-[UIDevice uniqueIdentifier]在iOS5实际在iOS5的时候已经被遗弃了,但是iOS7中已经完全的禁用了它。Xcode5甚至不会允许你编译包含了指引到-[UIDevice uniqueIdentifier]的app。此外,iOS7之前的使用了-[UIDevice un
2015-09-20 10:52:51
1840
原创 IOS 制作动态及静态Framework
什么是库?库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为 2 种类型开源库公开源代码,能看到具体实现 比如 SDWebImage 、 AFNetworking闭源库不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库、动态库静态库和动态库静态库和动态库的存在形式 1:静态库: .a 和 .framework 2:动态库: .dylib
2015-09-18 15:56:10
635
原创 把C程序编译成IOS SDK
最近在公司从事SDK相关的开发工作,开始的时候自己也是一头雾水,因为公司之前没有相关的案例,网上也找不到相关的资料,有的也只是Xcode编译SDK的一些配置,所以只能自己慢慢摸索,由于公司的项目需要用到第三方的库PJSIP,这个库是开源的,而且支持多平台,我分析它的编译方式,终于找到了一个适合的方法,解决了第一个大问题-SDK编译。需求项目要求把C程序编译成对应平台的SDK,然后再SDK的基础上进行
2015-09-18 15:30:44
2668
原创 Xcode7新特性
Xcode7新特性Xcode7.0随着IOS9的到来,苹果更新了对应的开发工具Xcode,在新的Xcode7中,新的开发工具已经扩大到支持watchOS2平台以及IOS9,IS X EC Capitan,借助于许多新的特性使得我们开发者开发应用,测试,调试等更加显得无缝链接和高效。Xcode7实现了很多以前没有的新功能,如允许我们检测内存泄露再它发生的时候,测试您的应用程序界面,测试覆盖率报告,或者
2015-09-18 13:58:33
755
原创 IOS静态库开发
在企业级开发中,我们往往会把一些公司一些底层的东西进行包装,封装成不同平台的框架,供公司内部人员使用及外部使用,如百度地图,高德地图,微信等等,前段时间也一直在公司做相关的框架封装。静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework静态库和动态库的区别静态库:链接时,静态库会被完整地复制到可执行文
2015-09-15 15:06:59
438
原创 VS2010中使用TinyXML
1:什么是XMLxml是可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
2014-05-28 16:55:28
2195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人