IOS
流汗的鱼
这个作者很懒,什么都没留下…
展开
-
swift中通知的使用
1.发通知。(以这条通知为例,通知名字:gameOverNotification。通知参数:title)NSNotificationCenter.defaultCenter().postNotificationName("gameOverNotification", object: title)2.在要监听这则通知的viewDidload方法里面添加观察者,以便监听这则通知原创 2014-07-01 10:19:54 · 4223 阅读 · 2 评论 -
PDF文件中的数字签名之(在一个PDF文件的签名代表)
原文地址:https://www.adobe.com/devnet-docs/acrobatetk/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf本文是自己无聊时候翻译的,如果有错误,请指出。本文档介绍了如何在一个PDF文档的数字签名和什么代表签名的相关特征的PDF语言支持。Adobe阅读器和Acrobat®有®®实现了所有P翻译 2016-01-25 10:41:13 · 10661 阅读 · 2 评论 -
PDF数字签名之(6.2如何生成公钥)
PDF文档的数字签名功能的设计与所有相关的标准的兼容性主流的公钥基础设施(PKI)部署在企业和政府的设置。PKI是集人,政策,程序,硬件,软件,用于创建,分配,管理和撤销,并使用数字标识包含公钥/私钥对用在签署PDF。在PDF签名的工作流程中,“PKI”一般是指数字ID发行,用户,管理员,以及在这些工作流程中使用的任何硬件或软件。PDF阅读器和实施符翻译 2016-01-25 10:45:35 · 2406 阅读 · 0 评论 -
ios UITextView 插入图片和文字自适应高度
1,首先自定义一个textView继承UITextview2.重写textview 的contentsize方法- (void)setContentSize:(CGSize)contentSize{ CGSize oriSize = self.contentSize; [super setContentSize:contentSize]; if(oriSize.h原创 2016-01-13 10:39:40 · 3059 阅读 · 0 评论 -
ios 发布应用程序
1.打开appledevelope后创建appid,因为证书是基于appid创建的。这个appid就是你的bundleid,是应用的唯一表示 2.创建发布证书,这个证书是基于上部创建的appid。3.创建配置文件,也可叫做许可文件,这个文件跟证书是匹配用的.4.安装证书,双击下载的证书即可,就安装到电脑的钥匙串中了5.在项目中的target中的buildcodesign中选择你刚才原创 2016-02-16 11:16:38 · 449 阅读 · 0 评论 -
UITableView 优化
说到UITableView优化,大家第一反应肯定是缓存池机制,在这我就不介绍缓存池机制了,主要说优化的事情1. 在这想问问tableView的数据源方法都有那些?代理方法都有哪些?很简单,凡是返回cell、heard或footer 都是数据源方法高度什么的都是代理方法2.tableview这些方法的执行顺序?首先,tableview继承scrollview,那么首先要知原创 2017-10-19 22:38:17 · 337 阅读 · 0 评论 -
ios架构之-viper模式
VIPER 是一个创建 iOS 应用简明架构的程序。VIPER 可以是视图 (View),交互器 (Interactor),展示器 (Presenter),实体 (Entity) 以及路由 (Routing) 的首字母缩写。简明架构将一个应用程序的逻辑结构划分为不同的责任层。VIPER 的主要部分是: 视图:根据展示器的要求显示界面,并将用户输入反馈给展示器。原创 2017-10-21 16:04:02 · 1173 阅读 · 0 评论 -
ios-多线程的理解
最近面试的时候,好多人问多线程。上来就说说你对多线程的理解。我直接想反问他对ios的理解。一般我们都回答:NSThread,NSOperation, GCD 这3中方式,还有一种是c的,我没用过,在这也不谈啦,以防面试的时候翻车。1.NSThread一般跟NSRunLoop一块用,应用场景就是倒计时吧,暂时没想到其他的。2.NSOperation应用场景举个例子吧,比如,请求依赖关系,原创 2017-09-18 09:54:29 · 625 阅读 · 0 评论 -
ios-runtime理解
好多童鞋问我runtime,今天我就说说我对runtime的理解runtime的使用:1.发送消息 objc_msgSend 要给对象发消息就用这个函数,其实通知的底层实现也是这个函数,首先所有的观察者会被添加到一个链表中,当对象某个属性改变后会对这个链表中的观察者发送消息,也是通过这个函数来实现的。2.交换方法 class_getClassMethod(获取方法地址) method_原创 2017-10-16 18:14:04 · 334 阅读 · 0 评论 -
SDWebImage底层的实现
SDWebImage底层的实现其实也就是图片缓存的解决方案之一,下面是干货咯1.加载图片前有个图片的唯一标示,也就是图片在服务器的地址我们暂且叫做图片url,根据图片url去imageCache缓存文件夹查看是否有这张图片,有就显示2.如果imageCache图片缓存中没有,就去沙盒里看看有没有,如果存在把图片添加在图片缓存的文件夹(imagecache)中3.沙盒不存在显示占位图片,原创 2017-10-16 18:26:36 · 333 阅读 · 0 评论 -
ios 9.1以后 添加libz.dylib 方法
1. 进入你项目的build phases 2.点击+号在弹出的对话框选择addother3.在弹出的对话框中输入"cmd"+"shift"+"g" 4.输入/usr/lib5.这个时候滑动到最下面就能看到libz.dylib了原创 2015-11-25 19:07:23 · 9679 阅读 · 0 评论 -
iOS 9 适配系列教程
转自:http://www.cocoachina.com/ios/20150703/12392.htmlDemo1_iOS9网络适配_改用更安全的HTTPSiOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL。采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不转载 2015-11-02 15:50:44 · 560 阅读 · 0 评论 -
自定义UINavigationController(导航控制器)
首先,我先说说怎样自定义导航控制器。1.自定义导航控制器需要新建一个类继承UINavigationController。如图:2.在initialize方法中,自定义一些属于自己的navigationBar的一些东西。比如:颜色,文字,适配IOS7等等.../** * 初始化(每一个类只会调用一次) */+ (void)initialize{ [UIColor原创 2014-05-06 13:14:49 · 2156 阅读 · 0 评论 -
HTTPS和HTTP的区别
HTTPS和HTTP的区别一、https协议需要到ca申请证书,一般免费证书很少,需要交费。二、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可原创 2014-11-18 10:42:54 · 622 阅读 · 0 评论 -
iPhone6分辨率与适配
分辨率和像素经新xcode6模拟器验证(分辨率为pt,像素为真实pixel):1.iPhone5分辨率320x568,像素640x1136,@2x2.iPhone6分辨率375x667,像素750x1334,@2x3.iPhone6 Plus分辨率414x736,像素1242x2208,@3x,(注意,在这个分辨率下渲染后,图像等比降低pixel分辨率至1080p(原创 2014-10-20 14:46:40 · 1557 阅读 · 0 评论 -
iOS应用下集成携程api(酒店和飞机票)
最近一个项目中要使用酒店查询和飞机票预定,我这一通折腾,好在皇天不负有心人,最后终于一一搞定。选择了携程,为什么呢?目前国内有几家规模比较大的,例如:去哪儿,艺龙旅行,和携程。了解了一圈,最后发现,携程的api免费的。所以我就选择了携程。如果你对携程api有什么疑虑,或者不清楚,不知道怎么使用的,请留言,我会尽快回复你的。目前网上的资料(ios用的)比较少,所以我就写了这篇博客让大家尽量少走些弯路原创 2014-11-25 15:16:55 · 3232 阅读 · 2 评论 -
CocoaPods
CocoaPods是什么?当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,原创 2015-06-29 15:01:30 · 548 阅读 · 0 评论 -
Xcode上传成功后,itunes上却显示二进制文件无效的处理方法
由于线上程序有bug,所以急于上线。从昨天开始上传,一直上传不成功,于是从网上各处找资料,最后在一个网站上找到了。二进制文件无效的解决方法:Product ---->Scheme---->editScheme,然后把最后两项都改为release。Analyze 和Archive都改为release就好了,然后增加build号重新上传即可。原创 2015-05-26 13:41:58 · 5092 阅读 · 0 评论 -
autolayout学习介绍------Masonry的使用
本文转自:http://adad184.com/2014/09/28/use-masonry-to-quick-solve-autolayout/前言1MagicNumber -> autoresizingMask -> autolayout以上是纯手写代码所经历的关于页面布局的三个时期在iphone1-iphon转载 2015-06-12 17:18:24 · 574 阅读 · 0 评论 -
iOS自定义cell导致数据加载混乱
转载自:http://www.2cto.com/kf/201308/238449.htmlUITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件。上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击事件,也可以在UITableViewCell中加入UITextField或者UITextVie转载 2015-08-01 11:05:14 · 2600 阅读 · 0 评论 -
Auto Layout 使用心得—— 实现三等分
本文转自https://lvwenhan.com/ios/431.htmlAuto Layout 的本质原理Auto Layout 的本质是用一些约束条件对元素进行约束,从而让他们显示在我们想让他们显示的地方。约束主要分为以下几种(欢迎补充):相对于父 view 的约束。如:距离上边距 10,左边距 10。相对于前一个元素的约束。如:距离上一个元素 20,距离左转载 2015-10-20 10:10:31 · 2439 阅读 · 0 评论 -
ios开发中对block 的理解
在ios开发中,block使用十分重要,熟练掌握block的各种操作,可以避免很多错误。1.开发中,如果在block中想要修改外部的成员变量,那么需要将这个成员变量用__block修饰就可以了2.开发中,如何避免循环引用?如何避免出现僵尸对象?如何避免出现野指针呢?用__weak修饰就可以了,为什么呢?__weak是弱引用,对象释放时,对象的属性也就释放了,不会调用一个已经释放了的对象的属原创 2017-10-16 18:36:18 · 291 阅读 · 0 评论 -
KVC 底层原理
KVC: key value coding 键值编码 :可以通过kvc 对对象的属性进行存取操作valueForkey 先找对象的相关方法,在找对象的相关变量1. 先找对象的相关方法,如果相关方法找不到2.那么去判断accessInstanceVariablesDirectly ,是否返回yes (如果不让外界通过kvc的方式访问你的私有变量可以将类方法的accessInstanceV原创 2017-11-18 19:04:45 · 425 阅读 · 0 评论 -
Swift4.0学习之路03-Swift中的基本数据类型、类型转化、类型推导
Swift 中的数据类型:整型、浮点型、对象类型、结构体类型等等1.整型 有符号:Int8:有符号的8位整数 Int16:有符号的16位整数 Int32:有符号的32位整数 Int64:有符号的64位整数 ...原创 2018-03-12 21:00:41 · 859 阅读 · 0 评论 -
Swift4.0学习之路04-Swift中的基本运算
OC:有隐式转换,所以允许不同类型的数据进行运算。Swift:没有隐式转换,必须指明类型后才能运算。 1.算数运算符:+ - * / +=(swift中的++变成了+=) -=(swift中的--变成了-=) 2.关系运算符: > < >= <= == != 3.赋值运算:= += -= /= *= 4.逻辑运算:...原创 2018-03-12 21:16:16 · 219 阅读 · 0 评论 -
Swift4.0学习之路05-Swift中的guard基本使用
Swift中又新增了一个逻辑分支guard,是swift2.0新增的语法,它与if非常相似,它设计的目的是提高程序的可读性,并且不满足条件的可即时return。注意事项: 1.guard必须使用在函数内部 2.guard必须带有else语句,语法格式如下: 当条件表达式为true时,跳过else中的内容,执行后面的内容 ...原创 2018-03-12 21:42:55 · 2105 阅读 · 0 评论 -
Swift4.0学习之路05-Swift中的for循环基本使用
OC中的for循环写法:for (int i = 0;i < 100;i++) { NSLog(@"i=%zd",i); }Swift中的for循环写法:let a = 100;for i in 0 ..< a { print("a=\(i)");}Swift中for循环不需要i的写法:let a = 100;for _ in 0..<a {...原创 2018-03-12 22:05:23 · 5903 阅读 · 2 评论 -
Swift4.0学习之路06-Swift中的字符串的使用
<一>字符串OC的字符串是一个对象: 0.NSString(不可变的),NSSMutableString(可变的) 1.获取字符串长度:str.lengthSwift的字符串是一个结构体: 0.let str = "不可变字符串"; var str = "可变字符串" 1.swift的字符串支持遍历 2.获取字符串长...原创 2018-03-12 23:21:37 · 436 阅读 · 1 评论 -
一张图快速适配iphone-x
原创 2018-03-13 11:18:31 · 842 阅读 · 0 评论 -
Swift开发中的Any和AnyObject 以及泛型的区别
摘要:我们都知道泛型、Any和AnyObject都是用于表示类型的随意性,甚至还有OC中的id类型,但是它们具体有什么不同呢?我们就来具体了解一下Any和AnyObject概括来说AnyObject用于任何类(class)的实例,而Any可以用于表示任何变量,包括各种基本类型、值类型以及实例。而在swift中,枚举类型和结构体(例如Array和Dictionary)都属于值类型,因而不能用AnyO...原创 2018-03-13 11:44:03 · 1974 阅读 · 0 评论 -
Swift4.0学习之路07-Swift中的数组的使用
1.在ios开发中,数组经常用到,今天我们就来说说数组// 1.定义一个不可变数组let arrayC = [1,2,3]// 2.定义一个可变数组// 2.1 定义一个任意类型的数组//var arrayM = Array<T>()var arrayM = Array<Any>()// 2.2 定义一个int类型的数组var arrayM2 = [3,...原创 2018-03-13 12:05:12 · 1018 阅读 · 0 评论 -
Swift4.0学习之路08-Swift中的字典的使用
swift中字典是由两部分组成,key和value。字典允许按照某个键来访问元素。key集合不能重复,但是value集合是可重复的// 1.定义一个不可变字典let dictC = ["a" : 1,"b" : 2]// 2.定义一个可变字典 此处也根据类型推导来省略Dictionary<String,Any>var dictM: Dictionary<String,In...原创 2018-03-13 12:53:03 · 2881 阅读 · 0 评论 -
Swift4.0学习之路02-Swift中的变量&常量
定义格式(注意:【】内可以省略): 常量:let 常量名称【:常量类型】= 值 变量:var 变量名称【:变量类型】= 值注意事项:1.必须指明是常量还是变量 2.变量名称可以是汉字或unicode字符 3.可以省略类型:swift中有类型推导机制,会自动根据值推导出相应的类型 4.常用option键来...原创 2018-03-12 19:47:50 · 246 阅读 · 0 评论 -
ReactiveObjc 初体验
ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架。RAC结合了函数式编程(Functional Programming)和响应式编程(React Programming)的框架,也可称其为函数响应式编程(FRP)框架 。作用RAC最大的优点是 提供了一个单一的、统一的方法去处理异步的行为,包括 Delegate,Blocks Callbacks,...原创 2018-03-16 21:45:01 · 1121 阅读 · 0 评论 -
ios 通过runtime 获取类对象的所有子类
- (NSArray *)findSubClass:(Class)defaultClass{ int count =objc_getClassList(NULL,0); if (count <=0) { return [NSArrayarray]; } NSMutableArray *output = [NSMu原创 2017-11-18 19:59:53 · 2456 阅读 · 0 评论 -
kvo 观察者模式底层深究
KVO,观察者模式,添加观察者,监听被观察者对象属性,最后要移除观察者使用方法:- (void)viewDidLoad { [super viewDidLoad]; _person = [Person new]; _person.name = @"old"; [_person addObserver:self forKeyPath:@"nam原创 2017-11-18 20:07:48 · 329 阅读 · 0 评论 -
ios-GCD信号量
信号量是一个整数,在创建的时候会有一个初始值,这个初始值往往代表我要控制的同时操作的并发数。在操作中,对信号量会有两种操作:信号通知与等待。信号通知时,信号量会+1,等待时,如果信号量大于0,则会将信号量-1,否则,会等待直到信号量大于0。什么时候会大于零呢?往往是在之前某个操作结束后,我们发出信号通知,让信号量+1。说完概念,我们来看看GCD中的三个信号量操作:dispa转载 2017-11-23 20:44:50 · 957 阅读 · 0 评论 -
mac 下git常用命令
通过一个需求来精通git的常用命令将本地的项目上传到远程代码仓库,并且打上标签,标签打错了,重新修改标签步骤:1.创建远程代码仓库2.初始化本地仓库 git init 本地仓库分为:暂缓区 和 master分支3.将本地代码添加到暂缓区 git add.4.将暂缓区代码提交到master分支 git commit5.给本地代码仓库和远程代码仓库添加关联 ,查看原创 2018-01-08 10:50:43 · 3406 阅读 · 0 评论 -
SDWebImage的一些注意点
SDWebImage的一些注意点删除缓存文件的两个方法clearMemory/clearDisk: 对应的clear方法clearMemory: 清除当前内存中所有的缓存clearDisk: 删除磁盘缓存中的缓存文件夹, 然后在新建一个clearMemory/clearDisk: 清理所有的磁盘缓存先删除过期的文件, 然后计算剩余的缓存文件大小, 如果(currentSize > maxSi...转载 2018-03-14 18:45:51 · 973 阅读 · 0 评论 -
SDWebImage 是如何保证线程安全的?
如果你曾经使用Objective-C做过并发编程,那你肯定见过@synchronized这个结构。@synchronized这个结构发挥了和锁一样的作用:它避免了多个线程同时执行同一段代码。和使用NSLock进行创建锁、加锁、解锁相比,在某些情况下@synchronized会更方便、更易读。SDWebImage就是使用了@synchronized来保证线程安全的内部使用@synchronized来...原创 2018-03-14 19:05:33 · 1278 阅读 · 0 评论