keychain介绍 iOS keychain 是一个相对独立的空间,保存到keychain钥匙串中的信息不会因为卸载/重装app而丢失, .相对于NSUserDefaults.plist文件保存等一般方式,keychain保存更为安全.所以我们会用keyChain保存一些私密信息,比如密码.证书.设备唯一码(把获取到用户设备的唯一ID 存到keychain 里面这样卸载或重装之后还可以获取到id,保证了一个设备一个ID)等等.keychain是用SQLite进行存储的.用苹果的话来说是一个专业…
iOS中的应用启动原理 来源: http://m.blog.csdn.net/article/details?id=50530090 http://m.warting.com/program/201601/127355.html  http://www.cnblogs.com/zhcios/p/3551034.html 一.UIApplication  1. 简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都…
李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研究了RunLoop的原理和特性. RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLo…
IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会浪费内存,影响性能. 因此我们要采取适当地方法来实现图片的轮播. 下面我们只是简单的介绍很多方法中的一种简单的实现原理. 一 二 三 四 五 六 七…
转自:http://www.cocoachina.com/ios/20151118/14270.html iOS hybrid App 的实现原理及性能监测 2015-11-18 11:39 编辑: lansekuangtu 分类:iOS开发 来源:CocoaChina 1 2571 iOS原理hybrid app性能监测     作者董一凡自述:作为一名写了十年代码的程序员,目前我最擅长的领域是移动平台的客户端开发,在移动领域的开发时间超过七年,前前后后涉猎过很多个平台.随着大部分移动平台自己…
iOS Category 添加属性实现原理 - 关联对象 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系.对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,使这个对象的属性跟这块内存产生一种关联. 那么如果想动态的添加属性,其实就是动态的产生某种关联就好了.而想要给系统的类添加属性,只能通过分类. 1.使用举例 这里给NSObject添加height属性,创建NSObject的分类 // 我们可…
好消息,<Python爬虫技术:深入理解原理.技术与开发>已经出版!!!   JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送Python基础视频课程!JetBrains官大中华区市场部经理赵磊作序!超过300个实战案例,10万行源代码,22个综合实战项目,海量学习资料! 购买地址: 当当 京东 知识图谱…
https://www.cnblogs.com/m4abcd/p/5242254.html Keychain 使用? ---为了实用最大化我觉得我应该直接先说使用! 当然是使用第三方库啦:sskeychain 3000+星星的库不开玩笑.github地址:https://github.com/soffes/sskeychain 导入完之后首先,编译一下有无错. 如果是自己手动导入: 1.把SSKeychain.h SSKeychain.m SSKeychainQuery.h SSKeychain…
一. 认识NSRunloop  1.1 NSRunloop与程序运行 那么具体什么是NSRunLoop呢?其实NSRunLoop的本质是一个消息机制的处理模式.让我们首先来看一下程序的入口——main.m文件,一个ios程序启动后,只有短短的十行代码居然能保持整个应用程序一直运行而没有退出,是不是有点意思?程序之所以没有直接退出是因为UIApplicationMain这个函数内部默认启动了一个跟主线程相关的NSRunloop对象,而UIApplicationMain这个函数一直执行没有返回就保存…
详细资料,请参看苹果官方文档Keychain Services Reference . ios中的keychain,用于保存用户的机密信息,对keychain的操作有4种,就是 增,删,改,查: SecItemCopyMatching 查 Returns one or more keychain items that match a search query, or copies attributes of specific keychain items. SecItemAdd 增 Adds o…
证书签名 证书:众所周知,我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,而这个过程中实际上是生成了一对公钥和私钥,保存在你Mac的Keychain中.代码签名正是使用这种基于非对称秘钥的加密方式,用私钥进行签名,用公钥进行验证.如下图所示,在你Mac的keychain的login中存储着相关的公钥和私钥,而证书中包含了公钥.你只能用私钥来进行签名,所以如果没有了私钥,就意味着你不能进行签名了,所以就无法使用这个证书…
最近,读完今年的第三本书<大话移动APP测试 Android与iOS>,在读到陈晔前辈改变中国测试行业的决心时,内心无比激动,作为一名初生的开发人员,我可能还无法理解测试行业的本质,但他那份通过分享改变现状的决心我深感共鸣.在此为每一位愿分享愿奉献的朋友点个赞! 弹幕,国内流行于视频网站A站和B站.网上关于弹幕的实现方法有很多,目前Android平台已经有比较成熟的解决方案DanmakuFlameMaster .而iOS平台尚无比较成熟的开源库,在借鉴DanmakuFlameMaster的实现…
转载自:http://www.cnblogs.com/cdts_change/p/3240893.html 一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]): 2.APNS:Apple Push Notification Service[苹果消息推送服务器]: 3.iPhone:用来接收APNS下发下…
某天,小熊碰见这样一个错误 Couldn't update the Keychain Item问题处理 ,网上搜索了下网上很多解决方案,依然百撕不得骑姐.后来参考下面两篇文章.才发现是用法不正确,网上好多一些错误用法的文章也是醉了. keychain浅析 以及iOS简单使用keychain存储密码 请原谅我的无耻copy部分原作内容,后面我会加一些原创注意事项,实在是担心有一天搜不出来了就可惜了.赞原作者一下,可惜没有作者微信,不然我一定发5毛钱红包.注意代码中下面注释出现的地方.我就是跪那了.…
非常早曾经写了一篇博客,总结cordova插件怎么调用到原生代码:cordova调用过程,只是写得太水.基本没有提到原理.近期加深了一点理解,又一次补充说明一下 js调用native 以下是我们产品中的代码片段: datePicker.show(options, function (date) { var month = date.getMonth() + 1; callback(null, date.getFullYear() + "-" + month + "-"…
用文本标记语言来进行布局,用的最多的应该是HTML语言.HTML能够理解为有一组特殊标记的XML语言. 一.iOS中xib与storyboard显示原理 在iOS中基本的布置界面的方式有3种:代码.xib,storyboard. 1. 代码 代码布置界面是万能的.但通常非常复杂.布置一个简单的界面可能须要非常多行代码.因此十分繁琐. 以下为创建一个button的代码,最少也要3行: UIButton *btn = [UIButton buttonWithType:UIButtonTypeCont…
在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? (1)UITouch 对象的简介 当用户用一根手指触摸屏幕时,会创建一个与手指相关联的 UITouch 对象 一根手指对应一个 UITouch 对象 UITouch 的作用 保存着根手指相关的信息,比如触摸的位置.时间.阶段 当手指移动时,系统会更新同一个 UITouch 对象,使之能够一直保持该手指…
contentOffset是哪个点??? 首先从字面理解:内容偏移 我可是查了词典的!!! 对于contentOffset有的时候我们会产生错误理解. 我不想在这里介绍错误的理解避免不必要的混淆. 我们什么时候会遇到contentOffset??? 更多的时候是在滚动试图中,我们可以通过它结合代理实现一些方法. 比如轮播(我会在下一篇介绍轮播的实现原理至于代码如果需要我可整理出来) 那么请让我通过图片演示来解释contentOffset. (一) 图一中绿色为屏幕也就是最大的显示范围也是滚动视图…
Demo先行:https://github.com/rayshen/GIKeychainGroupDemo 该demo里有2个工程,你先运行任何一个会存储一个值,再运行另一个会访问之前的app存储的值,并修改. 官方:https://developer.apple.com/library/ios/samplecode/GenericKeychain/Introduction/Intro.html 之前博客使用过Keychain,实现了数据删除APP后还能保存,但是并没有实现APP间的共享. 实现…
Dispatch Group在追加到Dispatch Queue中的多个任务处理完毕之后想执行结束处理,这种需求会经常出现.如果只是使用一个Serial Dispatch Queue(串行队列)时,只要将想执行的处理全部追加到该串行队列中并在最后追加结束处理即可,但是在使用Concurrent Queue 时,可能会同时使用多个Dispatch Queue时,源代码就会变得很复杂. 在这种情况下,就可以使用Dispatch Group. 1 2 3 4 5 6 7 8 9 10 11 12 13…
一.什么是CADisplayLink 简单地说,它就是一个定时器,每隔几毫秒刷新一次屏幕. CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器.我们在应用中创建一个新的 CADisplayLink 对象,把它添加到一个runloop中,并给它提供一个 target 和 selector 在屏幕刷新的时候调用. 一但 CADisplayLink 以特定的模式注册到runloop之后,每当屏幕需要刷新的时候,runloop就会调用CADisplayLink绑定的…
keychain在ios中是保存在sqlite数据库中的. 这个数据库文件的位置: 真机: /private/var/Keychains/keychain-2.db 虚拟机: /Users/USER-HOME/Library/Developer/CoreSimulator/Devices/26DCA62C-B516-4DEA-A601-5C2D0EA07710/data/Library/Keychains/keychain-2-debug.db 在虚拟机中,这个数据库考出来就不能读了,很奇怪.…
一. Keychain API KeyChain中item的结构为: 1.增加keychain Item OSStatus SecItemAdd (CFDictionaryRef attributes,CFTypeRef *result);attributes字典中包括增加items的类型键值对和对应类型的属性键值对.item类型键常量为kSecClass,可能的取值为通用密码(kSecClassGenericPassword),网络密码(kSecClassInternetPassword),证…
最近把其他书籍都放下了,主要是在研究GCD.如果是为了工作,以我以前所学的GCD.NSOperation等知识已经足够用了,但学习并不仅仅知识满足于用它,要知其然.并且知其所以然,这样才可以不断的提高自身技术水平. 本文主要参考http://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1 和 <iOS与OS X 多线程和内存管理>,以及其他一些杂七杂八的书籍或者博客. GCD已经面世很久了,基于GCD面向对象…
通常在开发中我们需要长久的保存某些值比如用户的账号密码等,对于隐私度很高的数据来说保证数据的安全性是尤为重要的.ios中的keyChain是一种很好的选择. 首先去开发者网站(https://developer.apple.com/library/ios/navigation/)下载一个叫GenericKeychain的示例项目. 我们只需要将示例项目中的 “KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.fra…
前言 多线程很多开发者多多少少相信也都有了解,以前有些东西理解的不是很透,慢慢的积累之后,这方面的东西也需要自己好好的总结一下.多线程从我刚接触到iOS的时候就知道这玩意挺重要的,但那时也是能力有限,没办法很好的理解它,要是只是查它的概念性的东西,网上一搜一大把,我们再那样去总结就显得意义不大了.这篇文章从我刚开始构思着去写的时候,就希望自己能换个角度去写,想从实际问题出发总结多线程,那就从第三方以及自己看到的一些例子还有前段时间读的多线程和内存管理的书中分析理解总结一下多线程. 这几个概念很容…
一. RunLoop简介 RunLoop字面意思是运行时,即跑圈得意思.它可以在我们需要的时候自己跑起来运行,在我们没有操作的时候就停下来休息,充分节省CPU资源,提高程序性能. 二. RunLoop基本作用: 保持程序持续运行,程序一启动就会开一个主线程,主线程一开起来就会跑一个主线程对应的RunLoop,RunLoop保证主线程不会被销毁,也就保证了程序的持续运行 处理App中的各种事件(比如:触摸事件,定时器事件,Selector事件等) 节省CPU资源,提高程序性能,程序运行起来时,当什…
本文由  网易云发布. 本文从攻防原理层面解析了iOS APP的安全策略.iOS以高安全性著称,但它并非金刚不坏之身.对于信息安全而言,止大风于青萍之末是上上策,杭研深入各个细节的研发工作,正是网易产品质量的保障. 一.iOS的安全问题 世所公认,iOS系统安全性非常高,很少出现漏洞,几乎不会中毒的情况.然而随着各种iOS安全隐患的频频出现,人们逐渐认识到,iOS跟Android一样也面临严重的安全问题.苹果宣称所有的iPhone都很安全,不会被恶意软件攻击,其实这只不过苹果封闭式的系统管理能够…
总结: Aspects 是对 类的继承结构isa.mataclass结构的调整和维护:相当于链表的节点插入和删除: 同时使用method Swizzling 对方法统一重定向: 同时使用类似代理的机制对消息进行转发: 在类结构调整和消息交换重定向的过程中插入织入的功能. 前言 众所周知,Aspects框架运用了AOP(面向切面编程)的思想,这里解释下AOP的思想:AOP是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果.也许大…
当我们新建一个 Cocoa 项目时,Xcode 会提供一系列的模板,类似前端的脚手架工具,只需要简单的几个选项,就可以配置好一个项目所需的基本环境. 这些基本环境配置一般包括: 编译选项.证书链选项 项目 Target.单元测试 Target 基于 git 的版本控制管理 默认的源文件 当然我们也可以新建一个空白的 Project,然后手动去组装这些东西. 由于苹果的封闭性,对 Cocoa 项目的管理基本上都在 Xcode 中进行,这个 All-in-One 的强大工具提供了从文档.编码.调试.…